繁体   English   中英

SDL平铺第2部分

[英]SDL Tiling part 2

我之前在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,但是我的函数仍然完全不会将图块打印到图像上。 图像保持完全透明。

您的代码应该产生一个有效的test_map ,看到SDL_CreateRGBSurface记录在这里

要记住的一件事是, SDL_Rect中的apply_surface并未设置所有值。 SDL_Rect没有将内存清零的默认构造函数。 您只分配xy而不分配wh ,这意味着您的wh将包含垃圾。 您应该按照本示例中的建议将这些值初始化为源曲面的wh

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM