opengl问题
写shader,用的glew,可是每次执行到glCreateShader()就内存错误引起崩溃,该如何解决啊...
写shader,用的glew,可是每次执行到glCreateShader()就内存错误引起崩溃,该如何解决啊
展开
2个回答
展开全部
glCreateShader(GL_FRAGMENT_SHADER) Access violation 之类的内存出错
是因为你没有在OpenGL初始化完全就是用了
GLuint vertexShader = glCreateShader(GL_VERTEX_SHADER);
GLuint fragmentShader = glCreateShader(GL_FRAGMENT_SHADER);
之类的函数 所以会出现内存错误
一 、检查你有没有初始化的方法:在OpenGL初始化代码中加入:
if (!glewIsSupported("GL_VERSION_2_0 GL_VERSION_1_5 GL_ARB_multitexture GL_ARB_vertex_buffer_object")) {
fprintf(stderr, "Required OpenGL extensions missing.");
exit(-1);
}
二、比较重要的初始化代码是:
glewInit();
三、上面比较好的添加头问价的方法是:
#include <GL/glew.h>
#if defined (_WIN32)
#include <GL/wglew.h>
#endif
#if defined(__APPLE__) || defined(MACOSX)
#include <GLUT/glut.h>
#else
#include <GL/glut.h>
#endif
可参考http://www.opengl.org/sdk/docs/man3/xhtml/glCreateShader.xml
是因为你没有在OpenGL初始化完全就是用了
GLuint vertexShader = glCreateShader(GL_VERTEX_SHADER);
GLuint fragmentShader = glCreateShader(GL_FRAGMENT_SHADER);
之类的函数 所以会出现内存错误
一 、检查你有没有初始化的方法:在OpenGL初始化代码中加入:
if (!glewIsSupported("GL_VERSION_2_0 GL_VERSION_1_5 GL_ARB_multitexture GL_ARB_vertex_buffer_object")) {
fprintf(stderr, "Required OpenGL extensions missing.");
exit(-1);
}
二、比较重要的初始化代码是:
glewInit();
三、上面比较好的添加头问价的方法是:
#include <GL/glew.h>
#if defined (_WIN32)
#include <GL/wglew.h>
#endif
#if defined(__APPLE__) || defined(MACOSX)
#include <GLUT/glut.h>
#else
#include <GL/glut.h>
#endif
可参考http://www.opengl.org/sdk/docs/man3/xhtml/glCreateShader.xml
追问
这个我看到过,可是glewIsSupported()返回值为不支持怎么办呢,该怎么解决呢
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询