在使用 SDL2 从曲面创建的纹理上渲染纹理
Render texture on top of texture created from surface with SDL2
我想将 png 加载到纹理中,然后在其上绘制另一个文本纹理。我正在做这样的事情:
SDL_Surface *bgImg = IMG_Load(PNG_PATH);
SDL_Texture *bg = SDL_CreateTextureFromSurface(renderer, bgImg);
SDL_Surface *textSurface = TTF_RenderText_Blended(font, text, red);
SDL_Texture *txt = SDL_CreateTextureFromSurface(renderer, textSurface);
SDL_SetTextureBlendMode(bg, SDL_BLENDMODE_NONE);
SDL_SetRenderTarget(renderer, bg);
SDL_RenderCopy(renderer, txt, NULL, &textDstRect);
SDL_SetRenderTarget(renderer, NULL);
SDL_RenderPresent(renderer);
我的代码基于这个答案。评论说,如果纹理是从表面加载的,这将不起作用,实际上并非如此。文本显示在背景图像后面,而不是其顶部。我知道文本已呈现,因为如果我将混合模式设置为SDL_BLENDMODE_ADD
,它是可见的,但这不是我想要的。
我想尝试将 bg 纹理的访问更改为SDL_TEXTUREACCESS_TARGET
,以防万一,但我找不到一种方法来为从表面创建的纹理做到这一点。
还有其他方法可以在从 PNG 文件加载的纹理上渲染文本吗?性能不是太重要,因为这只会在应用程序启动时发生一次。
我用SDL_TEXTUREACCESS_TARGET
创建了一个新纹理,并将表面加载的纹理复制到其中。
相关文章:
- 着色器纹理值与创建纹理时写入的值不同
- 如何使用 DXGI 格式DXGI_FORMAT_R1_UNORM创建 2D 纹理?
- D3DXCreateTextureFromFile 不会创建纹理
- 使用程序生成来创建磁盘,但纹理无法正常工作
- UE4.动态纹理创建和 mipmap
- OpenGL 混合会在纹理周围创建白色边框
- Cuda 从黑/白图像创建纹理对象
- 在使用 SDL2 从曲面创建的纹理上渲染纹理
- 在 DirectX 中加载 WIC 后创建纹理
- 如何从OpenGL 4.5中的单个Cube地图纹理中创建Cube地图数组纹理
- 如何从Intel MFT编码器的D11纹理创建IMFSample
- 在 OpenGL ES for Android 中运行时创建大型纹理的最有效方法
- 是否可以仅在片段着色器中创建纹理
- DirectX 11 - 如何创建非常简单的 2D 纹理
- OpenGL纹理格式,为OpenGL创建图像/纹理数据
- 创建原始OpenGL纹理数据(C++)
- 从SDL调色板表面(SDL_PIXELFORMAT_INDEX8)创建OpenGL纹理
- SDL2-从Surface(屏幕快照)创建纹理的问题
- 渲染纹理创建的图像不可见
- 为纹理创建棋盘图像