这个问题特定于 Android 上的 OpenGL ES 2.0,但可能存在使用通用 GL 功能的解决方法,因此我将其标记为“opengl”。
tl;博士:glPixelStorei(GL_UNPACK_ROW_LENGTH)
在 OpenGL ES 2.0 中是否有另一种方法来指定?因为根据规范,GL_UNPACK_ROW_LENGTH
OpenGL 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 中更新纹理的水平子区域?