0

以前、関数が常に null を返すという不平を SDL に投稿しました。私は間違いなく何かを解決する私の問題に対する答えを得ましたが、すべてではありません. これは投稿です: Tiling System C++ SDL

map.cppファイルに次を追加しました。

//Make a temporary map to draw the tiles to
Uint32 rmask, gmask, bmask, amask;
if ( SDL_BYTEORDER == SDL_BIG_ENDIAN ) {
    rmask = 0xff000000;
    gmask = 0x00ff0000;
    bmask = 0x0000ff00;
    amask = 0x000000ff;
}
else {
    rmask = 0x000000ff;
    gmask = 0x0000ff00;
    bmask = 0x00ff0000;
    amask = 0xff000000;
}
SDL_Surface* temp_map = SDL_CreateRGBSurface(SDL_SWSURFACE, MAP_WIDTH, MAP_HEIGHT, 32, rmask, gmask, bmask, amask);

画像は null を返さなくなりましたが、私の関数はタイルを画像にまったく印刷しません。画像は完全に透明なままです。

4

1 に答える 1

1

コードは有効な を生成する必要があります。ここに記載されているtest_mapを参照してください。SDL_CreateRGBSurface

心に留めておくべきことの 1 つは、入力にすべての値が設定されているわけSDL_Rectではないということです。メモリをゼロにするデフォルトのコンストラクタはありません。andのみを割り当てますが、andは割り当てません。つまり、andにはガベージが含まれます。この例で提案されているように、これらの値をソース サーフェスのおよびに初期化する必要があります。apply_surfaceSDL_Rectxywhwhwh

于 2013-02-20T16:49:36.760 に答える