渲染具有多个纹理的矩形

时间:2013-01-21 19:28:06

标签: opengl-es opengl-es-2.0

我有一个6个顶点矩形,大小为100x100,我用100x100背景图像覆盖。现在我想在它上面渲染两个“子纹理”。

假设我有两个子纹理大小20x20然后我喜欢定位在x:10 y:10和另一个x:50和y:50

(这些实际上是用作背景图像上的蒙版。)

我应该怎么做?我的第一个想法是发送一个统一的vec2与两个子纹理的位置信息片段着色器,但我不能真正弄清楚如何将它们转换为texture2d(subtexture,坐标)因为texture2d取0 -1值。我真的无法理解这一点,我希望得到一些指示,我应该去哪个方向。

(这将在OpenGL ES 2.0上使用)

1 个答案:

答案 0 :(得分:0)

然后我认为你真正想要的是如何更新纹理。在您的情况下,最简单的方法可能是使用glTexSubImage2D。以下将在您的原始帖子中执行您的要求

glTexSubImage2D( GL_TEXTURE_2D, 0, 10, 10, 20, 20, <format>, <type>, <subimage1> );
glTexSubImage2D( GL_TEXTURE_2D, 0, 50, 50, 20, 20, <format>, <type>, <subimage2> );

其中<format><type>描述了存储在<subimage*>的子纹理中的像素。其他问题还有很多额外的答案;只需搜索glTexSubImage2D。

更复杂的方法(当事情不像你的问题那么简单时)是使用帧缓冲对象渲染到纹理(如果需要,也可以搜索那个)。