私はOpenGLでプロジェクトを持っており、シェーダをロードしようとしています。私はGLuint shader=glCreateShader(shaderType);
を使っています。問題は、この行を実行しようとすると、EXC_BAD_ACCESS(コード= 1、アドレス= 0x0)(XCodeで)エラーが発生することです。glCreateShader原因EXC_BAD_ACCESS
私はglfwを初期化していない可能性があるいくつかの回答を見つけました。しかし、それはうまく動作するようです。 initOpenGLProgram()
で
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);
:新しいShaderProgram
で
glClearColor(0, 0, 0, 1);
glEnable(GL_DEPTH_TEST);
glfwSetKeyCallback(window, keyCallback);
shaderProgram = new ShaderProgram((char*)"shaders/vshader.glsl", NULL, (char*)"shaders/fshader.glsl");
:これは私の初期化コードである
printf("Loading vertex shader...\n");
vertexShader=loadShader(GL_VERTEX_SHADER,vertexShaderFile);
とloadShader
方法(この行はエラーをスロー)で:
GLuint shader=glCreateShader(shaderType);
また、私は質問があります。 OpenGL 3.3でプロジェクトを行う必要がありますが、glGetString(GL_VERSION)
でバージョンを確認すると、4.1というバージョンが得られます。今問題がありますか?
これはやや混乱します。あなたの質問を編集できますか? (私はすべてが原因でエラーが発生するのかどうかは十分にはわかりません) –
glCreateShader関数を呼び出すと、エラーが発生します。 –
熟考... –