SDL-SDL_GetRenderer和SDL_CreateRenderer之间的区别

问题描述

函数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