我正在使用SDL在C ++中制作游戏,我想用SDL_FillRect()渲染粒子。 我玩了几个小时的代码,但无论我做什么,粒子都没有绘制。 这是我的渲染函数中的代码(我确保我实际上是在调用函数):
void Particle::Render()
{
SDL_Rect rect;
rect.x = x;
rect.y = y;
//rect.w = Particle::Particle_Size;
//rect.h = Particle::Particle_Size;
rect.w = 8;
rect.h = 8;
surface = SDL_CreateRGBSurface(SDL_SWSURFACE,8,8,32,0,0,0,0);
if(SDL_FillRect(surface,&rect,SDL_MapRGB(surface->format,0,0,0)) != 0) printf("Error");
//SDL_RenderCopy(renderer,texture,NULL,&rect);
}
控制台未打印“错误”,因此SDL_FillRect()成功。但是,屏幕上没有显示任何内容。 我尝试使用传入该表面的SDL_CreateTextureFromSurface()创建一个纹理,然后使用SDL_RenderCopy,它在上面的函数中被注释掉了,但是在我评论它之前它已经工作了。我想使用SDL_FillRect,所以我可以使用彩色纹理。
我错过了什么吗?
答案 0 :(得分:1)
SDL_CreateRGBSurface()
功能会创建一个离屏表面。如果要绘制到屏幕,则必须绘制到SDL_GetWindowSurface()
返回的曲面。
也就是说,如果您使用的是SDL 2.0。
答案 1 :(得分:1)
我认为你可以使用这个功能来做你想要的事情:
SDL_RenderFillRect()
https://wiki.libsdl.org/SDL_RenderFillRect
您必须先设置渲染器颜色:
SDL_SetRenderDrawColor();
我认为您还可以更新窗口表面以获得您必须工作的内容。 那将使用
SDL_UpdateWindowSurface().
希望它有所帮助!