所以我刚刚意识到我正在为3d纹理工作的代码是针对OpenGL 1.1或者其他东西而在OpenGL 3.3中不再支持的。没有glTexture3D还有另一种方法吗?也许是通过我不了解的OpenGL 3.3中的库或其他函数?
编辑: 我不知道在哪里读到3D纹理是从新版本的OpenGL中取出的(今天一直在谷歌搜索),但请考虑一下:
我一直在关注教程/指南here。该程序编译顺利。现在阅读文章中的以下引用:
可能存在运行程序的环境不支持3D纹理,这会导致我们返回一个NULL地址,并且尝试使用NULL指针是一件坏事,所以一定要检查它并适当地做出响应(提供的示例以错误退出)。
该引用是指以下功能:
glTexImage3D = (PFNGLTEXIMAGE3DPROC) wglGetProcAddress("glTexImage3D");
在我的计算机(具有OpenGL 3.3)上运行我的程序时,同样的函数为我返回null。当我的朋友在他的计算机(具有OpenGL 1.2)上运行它时,它不会返回null。
答案 0 :(得分:1)
自OpenGL-1.2以来,上传3D纹理的方式没有变化。其功能仍然命名为
glTexImage3D
glTexSubImage3D
glCopyTexSubImage3D