纹理的 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_TextureSDL_Surfaces 使用SDL_Flip 从内存复制到屏幕缓冲区。因此,当将位图加载到表面时,不需要渲染器(在 SDL 2.0 之前确实不存在渲染器),但是当您使用 CreateTextureFromSurface 时,您需要告诉函数应该加载纹理的渲染器上下文。

也许不是最好的解释,但我希望你能有所作为。

如果您熟悉 SDL 1.2 但不熟悉 2.0,Migration guide 应该可以帮助您。

【讨论】:

以上是关于纹理的 SDL 渲染器参数,但表面不需要的主要内容,如果未能解决你的问题,请参考以下文章

SDL2 [优化]:SDL_Surface->texture->copy 比在渲染器上绘图快吗?

D3D三层Texture纹理经像素着色器实现渲染YUV420P

SDL2 C++ 截图

材质着色器和纹理

材质着色器和纹理

材质着色器和纹理