2

这个问题特定于 Android 上的 OpenGL ES 2.0,但可能存在使用通用 GL 功能的解决方法,因此我将其标记为“opengl”。

tl;博士:glPixelStorei(GL_UNPACK_ROW_LENGTH)在 OpenGL ES 2.0 中是否有另一种方法来指定?因为根据规范GL_UNPACK_ROW_LENGTHOpenGL ES 2.0 中不存在 。

我有一个纹理,我通过调用glTexImage2D, 从正在独立更新的客户端内存的固定区域频繁更新。在某些情况下,我知道只有图像的一个子区域发生了变化。我可以通过调用并仅指定纹理的上半部分来限制更新的glTexSubImage2d数(例如)。这导致显着的性能改进。

但是,当我尝试同时限制更新的列数(比如我只想更新纹理的左上象限)时,我注意到没有stride参数glTexSubImage2d。由于对于我的应用程序,作为所有glTexImage2d/源的客户端内存区域glTexSubImage2d具有图像的全宽,因此如果我调用glTexSubImage2d.

glPixelStorei(GL_UNPACK_ROW_LENGTH,stride)似乎是这样做的方法,但GL_UNPACK_ROW_LENGTH在 OpenGL 2.0 ES 中不受支持。那么有没有办法在 OpenGL ES 2.0 中更新纹理的水平子区域?

4

1 回答 1

3

在 OpenGL ES 2.0 中?没有。不过,它有一个扩展;我不知道它的实施范围有多广。并且 ES 3.0 完全支持它。

于 2013-08-09T17:58:49.193 回答