我在尝试将SDL_FillRect与SDL 2.0一起使用时遇到问题
这是我的代码:
bool running = true;
//Initialise SDL
SDL_Init(SDL_INIT_EVERYTHING);
SDL_Window *screen = SDL_CreateWindow("Test Game",
SDL_WINDOWPOS_UNDEFINED,
SDL_WINDOWPOS_UNDEFINED,
640, 480,
SDL_WINDOW_FULLSCREEN_DESKTOP | SDL_WINDOW_OPENGL);
while (running){
SDL_FillRect(screen, NULL, 0);
}
//Quit SDL
SDL_Quit();
return 0;
我得到的错误是:
1> c:\ users \ ethan \ desktop \ c projects \另一个测试用sdl \另一个测试用sdl \ main.cpp(16):错误C2664:'int SDL_FillRect(SDL_Surface *,const SDL_Rect *,Uint32)':不能将参数1从'SDL_Window *'转换为'SDL_Surface *'1>指向的类型不相关;转换需要reinterpret_cast,C风格的转换或函数式转换
2 回答
在SDL2中,您应该创建
SDL_Renderer
并使用SDL_RenderClear
.如果你真的想使用
SDL_FillRect
,那么你可以在一个单独的SDL_Surface
上调用它,然后分两步将该表面渲染到你的窗口上 . SDL2迁移指南讨论了这个问题:https://wiki.libsdl.org/MigrationGuide需要
SDL_RenderPresent
才能使纹理出现在渲染中