0

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

假设我有两个大小为 20x20 的子纹理,其中一个我喜欢定位在 x:10 y:10 和另一个 x:50 和 y:50

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

我该怎么办?我的第一个想法是发送一个统一的 vec2,其中包含两个子纹理的位置信息片段着色器,但我真的不知道如何将它们转换为 texture2d(subtexture,坐标),因为 texture2d 采用 0-1 值。我不能真正解决这个问题,我希望能得到一些关于我应该往哪个方向前进的指示。

(这将在 OpenGL ES 2.0 上使用)

4

1 回答 1

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。

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

于 2013-01-21T19:57:12.340 回答