我在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