OpenGL - 'glTexSubImage3D':找不到标识符
OpenGL - 'glTexSubImage3D': identifier not found
问题:我一直在尝试在openGL中弄清楚这个错误,我一直在使用glTexSubImage3D
遇到的错误。VS2010引发错误:glTexSubImage3D: identifier not found
用法:我正在尝试创建一个3D纹理,并沿着Z-Dimension放置十片(图像)。它类似于本文中的问题:C - 将多个图像放在数组指针中
但是,我一直在尝试使用gltexsubimage3d,以避免这些访问违规错误。
我已经在项目中包含了glext.h
,并且由于glTexImage3D
尚未属于OpenGL库的一部分,因此我使用了函数指针PFNGLTEXIMAGE3DPROC glTexImage3D
,以便在此处使用:http://content.gpwiki.org/index.php/opengl:教程:3D_Textures
代码:
我一直在关注Nehe的纹理映射教程和卷渲染教程:http://www.codeproject.com/articles/352270/getting-with-with-with-with-volume-rendering?msg = 4729498
GLuint m_nTexId;
unsigned char *tex;
int h = 1024;
int w = 256;
int slices = 10;
PFNGLTEXIMAGE3DPROC glTexImage3D = (PFNGLTEXIMAGE3DPROC) wglGetProcAddress("glTexImage3D");
int LoadGLTextures()
{
glGenTextures(1,(GLuint*)&m_nTexId );
if(m_nTexId == 0)
return false;
glBindTexture( GL_TEXTURE_3D, m_nTexId );
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER);
glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER);
glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_BORDER);
glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexImage3D(GL_TEXTURE_3D, 0, GL_RGBA, w, h , slices, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL );
tex = (unsigned char *)SOIL_load_image("Data/PA_170090.png", &w, &h, NULL, 0);
glTexSubImage3D(GL_TEXTURE_3D, 0, 0, 0, 0, h, w, 1, GL_RGBA, GL_UNSIGNED_BYTE, (GLvoid*) tex);
tex = (unsigned char*) SOIL_load_image("Data/PA_170091.png", &w, &h, NULL, 0);
glTexSubImage3D(GL_TEXTURE_3D, 0, 0, 0, 1, h, w, 1, GL_RGBA, GL_UNSIGNED_BYTE, (GLvoid*) tex);
tex = (unsigned char *)SOIL_load_image("Data/PA_170092.png", &w, &h, NULL, 0);
glTexSubImage3D(GL_TEXTURE_3D, 0, 0, 0, 2, h, w, 1, GL_RGBA, GL_UNSIGNED_BYTE, (GLvoid*) tex);
tex = (unsigned char *)SOIL_load_image("Data/PA_170093.png", &w, &h, NULL, 0);
glTexSubImage3D(GL_TEXTURE_3D, 0, 0, 0, 3, h, w, 1, GL_RGBA, GL_UNSIGNED_BYTE, (GLvoid*) tex);
tex = (unsigned char *)SOIL_load_image("Data/PA_170094.png", &w, &h, NULL, 0);
glTexSubImage3D(GL_TEXTURE_3D, 0, 0, 0, 4, h, w, 1, GL_RGBA, GL_UNSIGNED_BYTE, (GLvoid*) tex);
tex = (unsigned char *)SOIL_load_image("Data/PA_170095.png", &w, &h, NULL, 0);
glTexSubImage3D(GL_TEXTURE_3D, 0, 0, 0, 5, h, w, 1, GL_RGBA, GL_UNSIGNED_BYTE, (GLvoid*) tex);
tex = (unsigned char*) SOIL_load_image("Data/PA_170096.png", &w, &h, NULL, 0);
glTexSubImage3D(GL_TEXTURE_3D, 0, 0, 0, 6, h, w, 1, GL_RGBA, GL_UNSIGNED_BYTE, (GLvoid*) tex);
tex = (unsigned char*) SOIL_load_image("Data/PA_170097.png", &w, &h, NULL, 0);
glTexSubImage3D(GL_TEXTURE_3D, 0, 0, 0, 7, h, w, 1, GL_RGBA, GL_UNSIGNED_BYTE, (GLvoid*) tex);
tex = (unsigned char*) SOIL_load_image("Data/PA_170098.png", &w, &h, NULL, 0);
glTexSubImage3D(GL_TEXTURE_3D, 0, 0, 0, 8, h, w, 1, GL_RGBA, GL_UNSIGNED_BYTE, (GLvoid*) tex);
tex = (unsigned char*) SOIL_load_image("Data/PA_170099.png", &w, &h, NULL, 0);
glTexSubImage3D(GL_TEXTURE_3D, 0, 0, 0, 9, h, w, 1, GL_RGBA, GL_UNSIGNED_BYTE, (GLvoid*) tex);
//glBindTexture( GL_TEXTURE_3D, 0 );
return true;
}
问题与最初尝试使用glTexImage3D (...)
时相同。也就是说,3D纹理是OpenGL 1.2的功能,Windows仅为您的OpenGL 1.1提供无运行时的启动。
您需要加载与glTexImage3D (...)
相同的glTexSubImage3D (...)
功能。
PFNGLTEXSUBIMAGE3DPROC glTexSubImage3D =
(PFNGLTEXSUBIMAGE3DPROC) wglGetProcAddress("glTexSubImage3D");
相关文章:
- 设置 Visual Studio for MPI: 找不到标识符错误
- 找不到标识符合并
- 从子类访问模板类成员时出现"找不到标识符"错误
- OpenCV 3 错误"CV_FOURCC":找不到标识符
- im调用函数时找不到标识符?
- clock_gettime:在 Windows 10 的 Visual Studio 中找不到标识符
- 英特尔 TBB - "初始化关键部分 Ex":找不到标识符编译器错误
- 找不到标识符.C3861
- 在void tryagain()上找不到标识符
- 在C 类中找不到标识符
- 找不到标识符,尝试在 C++ 中显示数组值
- 我遇到:错误2错误C3861:"fx":找不到标识符
- OpenGL - 'glTexSubImage3D':找不到标识符
- "GetProcessIdOfThread":找不到标识符
- 错误 C3861:"strcpy_y":找不到标识符
- "printf":找不到标识符
- 错误 C3861:"initNode":找不到标识符
- 在抽象类中找不到C++标识符
- 错误 C3861:"getGaborKernel":找不到标识符
- 错误 C3861:"对齐":找不到标识符