1
이 코드는 레거시 OpenGL 3.0에서 정상적으로 작동하지만 포워드 호환 모드 (설치시 4.1 및 3.3)에서는 실패합니다. 필자는 하드웨어와 소프트웨어 구현을 테스트했습니다. OpenGL 컨텍스트를 얻으려면 SDL을 사용하고 일부 기능을 찾으려면 GLEW를 사용합니다. 아래 코드를 내 코드에 추가하면 문제가 발생합니다.OpenGL 3.0 glVertexAttribPointer : 레거시 작동, 포워드 호환 (코어)이 없음
SDL_GL_SetAttribute(SDL_GL_CONTEXT_FLAGS, SDL_GL_CONTEXT_FORWARD_COMPATIBLE_FLAG);
코드의 문제가있는 부분은
glBindBuffer(GL_ARRAY_BUFFER, glb.vbo);
glBufferData(
GL_ARRAY_BUFFER,
size * sizeof(GLfloat),
input,
GL_DYNAMIC_DRAW
);
test_gl_errors(); /* GL_NO_ERROR */
glUseProgram(glb.program);
glEnableVertexAttribArray(glb.vert_array);
glEnableVertexAttribArray(glb.colour_array); /* I use this later. */
test_gl_errors(); /* GL_NO_ERROR */
glVertexAttribPointer(
glb.vert_array,
2,
GL_FLOAT,
GL_FALSE,
5 * sizeof(GLfloat),
0
);
test_gl_errors(); /* GL_INVALID_OPERATION */
내가 더 많은 코드를 추가 할
을 glVertexAttribPointer하는 전화이지만, 물건을 많이가있다. 아래 링크에서 정보를 읽는 것이 도움이되지 않았습니다. 어떤 제안? https://www.opengl.org/sdk/docs/man/html/glVertexAttribPointer.xhtml
내 OpenGL을 설정 :
- AMD 카보 베르데에 갈륨 0.4 (DRM 2.45.0/4.7.2-1-CK, LLVM 3.8.1) llvmpipe에
- 갈륨 0.4 (LLVM 3.8, 128 비트)
- Mesa3D : 12.0.1
전화 할 때 VAO 바운드가 있습니까? 이들은 핵심 프로파일에 필요합니다. –
@RetoKoradi 코드를 더 추가했습니다. – Michas
아직도 VAO가 보이지 않습니다. 이 전에는'glGenVertexArray()'와'glBindVertexArray()'가 있어야합니다. –