opengl中多重纹理的问题

时间:2021-10-30 04:47:26
使用多重纹理调用 glActiveTexture方法总是报错

Unhandled exception at 0x00000000 in 3dsRender.exe: 0xC0000005: Access violation.

3 个解决方案

#1


有人知道吗?谢谢了!!!

#2


同问~~~~

#3


你的问题是这样的,如果你使用glext.h头文件的话,你要先验证GL_ARB_multitexture扩展是否支持
可以调用glGetString(GL_EXTENSIONS),获取扩展字符串,再判断GL_ARB_multitexture在不在里面,如果在:

PFNGLACTIVETEXTUREARBPROC glActiveTextureARB=(PFNGLACTIVETEXTUREARBPROC)wglGetProcAddress("glActiveTextureARB");
if(glActiveTextureARB==NULL)
{
//...出错处理
}


在以后的程序中调用glActiveTextureARB()就不会出错了。
你也可以判断你的显卡所支持的OpenGL版本

const GLUbyte *version=glGetString(GL_VERSION);
//如果你检测到的版本号不小于1.3.0,则可以写以下程序
PFNGLACTIVETEXTUREPROC glActiveTexture=(PFNGLACTIVETEXTUREPROC)wglGetProcAddress("glActiveTexture");
if(glActiveTexture==NULL)
{
//出错处理
}
//在后续程序中就直接调用
glActiveTexture(texture);



如果你使用glew库,则要先调用glewInit(),glActiveTexture函数指针就为空。。
如果你使用了glut库,也可以调用glutGetProcAddress("glActiveTexture");获取函数指针

方法多种多样,由你选择。。。
LZ记住了

#1


有人知道吗?谢谢了!!!

#2


同问~~~~

#3


你的问题是这样的,如果你使用glext.h头文件的话,你要先验证GL_ARB_multitexture扩展是否支持
可以调用glGetString(GL_EXTENSIONS),获取扩展字符串,再判断GL_ARB_multitexture在不在里面,如果在:

PFNGLACTIVETEXTUREARBPROC glActiveTextureARB=(PFNGLACTIVETEXTUREARBPROC)wglGetProcAddress("glActiveTextureARB");
if(glActiveTextureARB==NULL)
{
//...出错处理
}


在以后的程序中调用glActiveTextureARB()就不会出错了。
你也可以判断你的显卡所支持的OpenGL版本

const GLUbyte *version=glGetString(GL_VERSION);
//如果你检测到的版本号不小于1.3.0,则可以写以下程序
PFNGLACTIVETEXTUREPROC glActiveTexture=(PFNGLACTIVETEXTUREPROC)wglGetProcAddress("glActiveTexture");
if(glActiveTexture==NULL)
{
//出错处理
}
//在后续程序中就直接调用
glActiveTexture(texture);



如果你使用glew库,则要先调用glewInit(),glActiveTexture函数指针就为空。。
如果你使用了glut库,也可以调用glutGetProcAddress("glActiveTexture");获取函数指针

方法多种多样,由你选择。。。
LZ记住了