glTexSubImage3D vs QOpenGLTexture setData

glTexSubImage3D vs QOpenGLTexture setData

本文关键字:setData QOpenGLTexture vs glTexSubImage3D      更新时间:2023-10-16

据我了解,QOpenGLTexture::setData在纹理数组或3D纹理的情况下等同于glTexImage3D。现在,如果我想使用 PBO 在运行时更新纹理,我需要使用 glTexSubImage3D 而不是 glTexImage3D,Qt 纹理中的等效物是什么?

首先,异步上传绝不需要使用glTexSubImage3D;它们适用于任何像素传递函数。

其次,setData相当于OpenGL函数的SubImage类。或者至少,大多数超载setData是;采用MipMapGeneration标志的那个将为你分配存储空间(因为Qt的OpenGL抽象是一致性消亡的地方(。因此,您可以将 PBO 与 setData 一起使用。

OpenGL中的纹理更像是指针。 allocateStorage就像分配内存并将分配的内存存储在指针中(int *p = new int[20];(。 setData就像访问分配的对象并将数据复制到其中(p[0] = 5;(。您必须先分配内存,然后才能将内容存储到其中,但是在之前这样做之后,您不需要再次分配内存。