C ++ SDL2如何为单个图块着色

时间:2017-05-04 11:27:29

标签: c++ colors sdl-2 tile

我正在通过编写经典 roguelike 来学习C ++和SDL2。现在我通过渲染tiles.png图像的一部分来构建地图,如下所示:

tiles

我跟着lazyfoo's tiling tutorial并且它有效,但我希望能够更改每个平铺背景和前景色。我可以改变像this other tutorial那样的完整纹理颜色,但是如果我想要的话,比如某个地方的棕色门和其他地方的灰色门呢?

这里最好的方法是什么?显然我不能将数百种颜色组合存储在png中。我应该为每个瓷砖创建一个纹理,还是有更好的方法?

谢谢! :)

1 个答案:

答案 0 :(得分:1)

SDL-2表示您使用opengl渲染切片。使用混合和颜色材料。使用CSDL_SetRenderDrawColorSDL_SetRenderDrawBlendMode SDL_SetTextureBlendModeSDL_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