我在OpenGL中有一个项目,我试图加载着色器。我使用GLuint shader=glCreateShader(shaderType);
。问题是,当它试图运行这条线时,我得到EXC_BAD_ACCESS(code = 1,address = 0x0)错误(在XCode中)。glCreateShader导致EXC_BAD_ACCESS
我发现了一些答案,我可能没有初始化glfw或glew。但它似乎工作得很好。这是我的初始化代码:
if (!glfwInit()) {
fprintf(stderr, "Couldn't initialize GLFW.\n");
exit(EXIT_FAILURE);
}
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
glfwSetErrorCallback(errorCallback);
GLFWwindow* window = glfwCreateWindow(WIDTH, HEIGHT, "OpenGL Test", nullptr, nullptr);
if (!window) {
fprintf(stderr, "Couldn't create window.\n");
glfwTerminate();
exit(EXIT_FAILURE);
}
glfwMakeContextCurrent(window);
glfwSwapInterval(1);
if (glewInit() != GLEW_OK) {
fprintf(stderr, (char*)"Couldn't initialize GLEW library.\n");
exit(EXIT_FAILURE);
}
initOpenGLProgram(window);
在initOpenGLProgram()
:
glClearColor(0, 0, 0, 1);
glEnable(GL_DEPTH_TEST);
glfwSetKeyCallback(window, keyCallback);
shaderProgram = new ShaderProgram((char*)"shaders/vshader.glsl", NULL, (char*)"shaders/fshader.glsl");
在新ShaderProgram
:
printf("Loading vertex shader...\n");
vertexShader=loadShader(GL_VERTEX_SHADER,vertexShaderFile);
和loadShader
方法(此行引发错误):
GLuint shader=glCreateShader(shaderType);
另外我有一个问题。我需要在OpenGL 3.3中做我的项目,但是当我用glGetString(GL_VERSION)
检查版本时,我得到了4.1版本。现在会有问题吗?
这有点混乱。你能编辑你的问题吗? (我不完全确定是什么导致了错误。) – 2016-07-15 21:41:42
调用glCreateShader函数会导致错误。 –
正在考虑...... – 2016-07-15 21:50:24