问题描述
函数SDL_GetRenderer(SDL_Window*)
和SDL_CreateRenderer(SDL_Window*,int,Uint32)
似乎都做同样的事情:从窗口返回指向SDL_Renderer
的指针。但是,哪种方法更适合该任务? SDL Wiki并未提供有关应在何处使用哪种方法的大量信息,因此请解释每种方法的用途,它们的不同之处以及应在何处使用。
解决方法
SDL_CreateRenderer
允许您通过指定一些选项来为窗口创建渲染器。它存储在特定的窗口数据中,您可以使用SDL_GetRenderer
查询该数据(因此后者等效于(SDL_Renderer *)SDL_GetWindowData(window,SDL_WINDOWRENDERDATA)
)
如果在未事先创建的情况下调用SDL_GetRenderer
,则会得到NULL指针。
如果您在窗口上两次调用SDL_CreateRenderer
,则第二次调用将失败,并显示SDL_SetError("Renderer already associated with window");
(请参见第805行)。
请参见here