纹理的 SDL 渲染器参数,但表面不需要
Posted
技术标签:
【中文标题】纹理的 SDL 渲染器参数,但表面不需要【英文标题】:SDL Renderer argument for texture but not needed for surface 【发布时间】:2014-09-09 20:57:49 【问题描述】:我正在学习SDL的基础知识,然后我陷入了这个疑问。我了解到 SDL 纹理是使用 CPU 的 SDL 表面的 GPU 对应物。但是为了获得一个表面,没有给出渲染器参数,只需将要加载的资产作为参数给出。但是对于将表面转换为纹理渲染器参数是需要的。我在这里错过了什么?
SDL_Surface* pTempSurface=SDL_LoadBMP("image.bmp");
SDL_Texture* pTexture=SDL_CreateTextureFromSurface(m_pRenderer,pTempSurface);
【问题讨论】:
【参考方案1】:SDL_Surface
不使用SDL_Renderer
,它仅由/用于SDL_Texture
。 SDL_Surfaces
使用SDL_Flip
从内存复制到屏幕缓冲区。因此,当将位图加载到表面时,不需要渲染器(在 SDL 2.0 之前确实不存在渲染器),但是当您使用 CreateTextureFromSurface
时,您需要告诉函数应该加载纹理的渲染器上下文。
也许不是最好的解释,但我希望你能有所作为。
如果您熟悉 SDL 1.2 但不熟悉 2.0,Migration guide 应该可以帮助您。
【讨论】:
以上是关于纹理的 SDL 渲染器参数,但表面不需要的主要内容,如果未能解决你的问题,请参考以下文章
SDL2 [优化]:SDL_Surface->texture->copy 比在渲染器上绘图快吗?