![](/img/trans.png)
[英]glTexSubImage3D(GL_TEXTURE_2D_ARRAY, …) and GL_TEXTURE_SWIZZLE_RGBA
[英]glTexSubImage3D not updating texture
我正在尝试使用glTexSubImage3D
仅更新具有 16 个 4096*4096 纹理的大型纹理数组中一个纹理的一部分。 但是,我无法让它工作。 该调用不会引发任何错误。 (虽然将宽度设置为超过 4096 确实如此)。
glTexSubImage3D( GL_TEXTURE_2D_ARRAY, // target
0, // level
0, // x offset
0, // y offset
0, // z offset
TEXTURE_DIM, // width
TEXTURE_DIM, // height
0, // depth
GL_RGBA, // format
GL_UNSIGNED_BYTE, // type
textures[1]); // zeroed memory
这很奇怪,因为当我用glTexImage3D
替换这个调用时,纹理会更新:
glTexImage3D(GL_TEXTURE_2D_ARRAY, // target
0, // level
GL_RGBA8, // Internal format
TEXTURE_DIM, // width
TEXTURE_DIM, // height
1, // the number of layers
0, // 0 required
GL_RGBA, // format
GL_UNSIGNED_BYTE, // type
textures[1]); // zeroed memory
我是否缺少glTexSubImage3D
需要的一些额外步骤? 可能是什么问题? 感谢您的任何指点
在您的情况下,深度参数必须为 1。 注意,更新区域的大小是width * height * depth 。 如果深度为 0,则根本没有任何改变。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.