【问题标题】:SDL2 FillRect with SDL_Window issuesSDL2 FillRect 与 SDL_Window 问题
【发布时间】:2014-03-26 19:20:59
【问题描述】:

我在尝试将 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\another test with sdl\another 使用 sdl\main.cpp(16) 进行测试:错误 C2664:'int SDL_FillRect(SDL_Surface *,const SDL_Rect *,Uint32)' : 无法将参数 1 从 'SDL_Window *' 转换为 'SDL_Surface *'

1> 指向的类型是 无关;转换需要 reinterpret_cast、C-style cast 或 函数式转换

【问题讨论】:

    标签: c++ sdl


    【解决方案1】:

    在 SDL2 中,您应该创建一个 SDL_Renderer 并使用 SDL_RenderClear

    如果您真的想使用SDL_FillRect,那么您可以在单独的SDL_Surface 上调用它,然后分两步将该表面渲染到您的窗口上。 SDL2 迁移指南谈到了这些东西: https://wiki.libsdl.org/MigrationGuide

    【讨论】:

      【解决方案2】:

      需要SDL_RenderPresent 才能使您的纹理出现在您的渲染中

      【讨论】:

      • 这篇文章因为太短而被自动标记为低质量。你介意扩展一下来解释它是如何解决问题的吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-24
      • 2015-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多