我正在通过编写经典 roguelike 来学习C ++和SDL2。现在我通过渲染tiles.png
图像的一部分来构建地图,如下所示:
我跟着lazyfoo's tiling tutorial并且它有效,但我希望能够更改每个平铺背景和前景色。我可以改变像this other tutorial那样的完整纹理颜色,但是如果我想要的话,比如某个地方的棕色门和其他地方的灰色门呢?
这里最好的方法是什么?显然我不能将数百种颜色组合存储在png中。我应该为每个瓷砖创建一个纹理,还是有更好的方法?
谢谢! :)
答案 0 :(得分:1)
SDL-2表示您使用opengl渲染切片。使用混合和颜色材料。使用C
,SDL_SetRenderDrawColor
,SDL_SetRenderDrawBlendMode
SDL_SetTextureBlendMode
,SDL_SetTextureColorMod
。
例如,绘制黄色字母:
SDL_SetTextureAlphaMod
要绘制不同的背景,您需要使用带alpha通道的字母。首先,您需要绘制文本出现的背景,然后自己绘制文本。 例如:
SDL_SetTextureColorMod(renderer, 255, 255, 0);
或cheeting版本(如果你不想使用alpha混合):
//load surface with alpha-channel here
SDL_SetRenderDrawColor(renderer, 0, 0, 255); //set blue background
//draw rect for background here
SDL_SetTextureColorMod(renderer, 255, 255, 0); //set yellow letters
SDL_SetRenderDrawBlendMode(renderer, SDL_BLENDMODE_BLEND);
//draw text here