如何在opengl和cg着色器中使用3d纹理?

如何在opengl和cg着色器中使用3d纹理?,opengl,graphics,cg,Opengl,Graphics,Cg,我对3d纹理贴图有问题。如果我有几个2d纹理,我想用这些2d纹理构建一个3d纹理。我该怎么做才能把这些数据放在一起?函数glTexImage3D以参数const GLvoid*texels结束,该参数将导致纹理的数据。但现在我有32个2D纹理,我想得到一个3D纹理。怎么做 第二个问题是图像空间滤波方法。有人知道这是什么吗?我应该用这个方法来确定纹理坐标 但现在我有32个2D纹理,我想得到一个3D纹理。怎么做 在程序中的某个时刻,您可以上载纹理。从你的问题来看,我想你已经使用glTexImage2

我对3d纹理贴图有问题。如果我有几个2d纹理,我想用这些2d纹理构建一个3d纹理。我该怎么做才能把这些数据放在一起?函数glTexImage3D以参数const GLvoid*texels结束,该参数将导致纹理的数据。但现在我有32个2D纹理,我想得到一个3D纹理。怎么做

第二个问题是图像空间滤波方法。有人知道这是什么吗?我应该用这个方法来确定纹理坐标

但现在我有32个2D纹理,我想得到一个3D纹理。怎么做

在程序中的某个时刻,您可以上载纹理。从你的问题来看,我想你已经使用glTexImage2D上传了它们。在纹理对象之间传输纹理数据是困难、繁琐且不太可靠的,因此询问如何将2D纹理组合到3D纹理中有点不合适


但你能做得很好的是,从一个接一个上传到3D涡流块的2D数据切片中构建3D纹理。只需将对glTexImage2D的每个调用替换为对的调用。在上传任何数据之前,您可以使用调用和空指针作为数据参数初始化纹理(如果您使用的是OpenGL-4,也可以使用)。

您真的需要3D纹理吗?也许更好的方法是使用纹理阵列

以下是一个很好的信息:

我认为它比3D纹理要简单一些。它们非常有用,例如在级联阴影贴图中,每个级联都指向纹理数组中的不同元素