此问题仅适用于Android上的OpenGL ES 2.0,但可能有使用常见GL功能的解决方法,因此我将其标记为“opengl”。
tl; dr:还有另一种在OpenGL ES 2.0中指定glPixelStorei(GL_UNPACK_ROW_LENGTH)
的方法吗?因为根据spec,OpenGL ES 2.0中不存在GL_UNPACK_ROW_LENGTH
。
我有一个纹理,我经常通过调用glTexImage2D
从一个独立更新的客户端内存的固定区域更新。在某些情况下,我知道只有图像的一个子区域发生了变化。我可以通过调用glTexSubImage2d
并仅指定纹理的上半部分(例如)来限制更新的行的数量。这可以显着提高性能。
但是当我试图限制更新的列数时(比如说我只想更新纹理的upper- left 象限),我注意到没有 stride < / strong> glTexSubImage2d
的参数。因为对于我的应用程序,作为所有glTexImage2d
/ glTexSubImage2d
的源的客户端内存区域具有图像的整个宽度,所以如果我调用glTexSubImage2d
,我需要将其指定为步幅。
glPixelStorei(GL_UNPACK_ROW_LENGTH,stride)
似乎是这样做的方法,但OpenGL 2.0 ES不支持GL_UNPACK_ROW_LENGTH
。那么有没有办法在OpenGL ES 2.0中更新纹理的水平子区域?