【问题标题】:Rendering a rectangle with multiple textures渲染具有多个纹理的矩形
【发布时间】:2013-01-22 03:57:12
【问题描述】:

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

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

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

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

(这是在 OpenGL ES 2.0 上使用的)

【问题讨论】:

  • 您希望子纹理成为较大纹理的一部分,还是它们真的是位于“背景”矩形顶部的独立对象?
  • 它应该成为一部分,因为实际上我需要做的是使用子纹理来掩盖大纹理。

标签: opengl-es opengl-es-2.0


【解决方案1】:

那么我认为您真正在寻找的是如何更新纹理。在您的情况下,最简单的方法可能是使用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> );

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多