Ich habe ein Projekt in OpenGL und ich versuche, Shader zu laden. Ich benutze dafür GLuint shader=glCreateShader(shaderType);
. Das Problem ist, wenn es versucht, diese Linie zu laufen, bekomme ich EXC_BAD_ACCESS (Code = 1, Adresse = 0x0) Fehler (in XCode).glCreateShader verursacht EXC_BAD_ACCESS
Ich habe ein paar Antworten gefunden, die ich vielleicht nicht glfw oder glew initialisiert habe. Aber es scheint, es funktioniert gut. Dies ist mein Code für die Initialisierung:
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);
in 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");
in neuen ShaderProgram
:
printf("Loading vertex shader...\n");
vertexShader=loadShader(GL_VERTEX_SHADER,vertexShaderFile);
und in loadShader
Verfahren (diese Linie wirft einen Fehler):
GLuint shader=glCreateShader(shaderType);
Auch ich habe eine Frage. Ich muss mein Projekt in OpenGL 3.3 machen, aber wenn ich Version mit glGetString(GL_VERSION)
überprüfe, bekomme ich 4.1 Version. Wird es jetzt ein Problem geben?
Dies ist etwas verwirrend. Könnten Sie Ihre Frage bitte bearbeiten? (Ich bin mir nicht ganz sicher, was alles den Fehler verursacht.) –
Der Aufruf der glCreateShader-Funktion verursacht den Fehler. –
Nachdenken ... –