0

我之前在 SDL 中发布了一个问题,抱怨我的函数总是返回 null。我得到了我的问题的答案,它肯定解决了一些问题,但不是所有问题。这是帖子:平铺系统 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记录。

要记住的一件事是,您的SDL_Rectinapply_surface没有设置所有值。SDL_Rect没有将内存归零的默认构造函数。您只分配xandy但从不分配wand h,这意味着您的wandh将包含垃圾。您应该将这些值初始化为源表面w,并h按照本示例中的建议。

于 2013-02-20T16:49:36.760 回答