我有一个6个顶点矩形,大小为100x100,我用100x100背景图像覆盖。现在我想在它上面渲染两个“子纹理”。
假设我有两个子纹理大小20x20然后我喜欢定位在x:10 y:10和另一个x:50和y:50
(这些实际上是用作背景图像上的蒙版。)
我应该怎么做?我的第一个想法是发送一个统一的vec2与两个子纹理的位置信息片段着色器,但我不能真正弄清楚如何将它们转换为texture2d(subtexture,坐标)因为texture2d取0 -1值。我真的无法理解这一点,我希望得到一些指示,我应该去哪个方向。
(这将在OpenGL ES 2.0上使用)
答案 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。
更复杂的方法(当事情不像你的问题那么简单时)是使用帧缓冲对象渲染到纹理(如果需要,也可以搜索那个)。