Может кто-нибудь объяснить мне, почему добавление следующих линийТребует ли OpenGL нормалей для создания теней?
glEnableClientState(GL_NORMAL_ARRAY);
glNormalPointer(GL_FLOAT, 0, 0);
закодировать
glewInit();
glEnable (GL_LIGHTING) ;
glEnable (GL_COLOR_MATERIAL) ;
glColorMaterial (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE) ;
glEnable(GL_LIGHT0);
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_GREATER);
glEnable(GL_CULL_FACE);
glCullFace(GL_BACK);
glClearDepth(0);
GLuint vertexbuffer;
glGenBuffers(1, &vertexbuffer);
glBindBuffer(GL_ARRAY_BUFFER,vertexbuffer);
glBufferData(GL_ARRAY_BUFFER,sizeof(float)*Loader.verticesFixed.size(),&Loader.verticesFixed[0],GL_STATIC_DRAW);
glEnableVertexAttribArray(0);
glBindBuffer(GL_ARRAY_BUFFER,vertexbuffer);
glVertexAttribPointer(
0, // attribute 0. No particular reason for 0, but must match the layout in the shader.
3, // size
GL_FLOAT, // type
GL_FALSE, // normalized?
12, // stride
(void*)(0) // array buffer offset
);
glDrawArrays(GL_TRIANGLES,0,Loader.verticesFixed.size()/3);
в эту модель с тенями:
Я не представил никаких нормальных данных, и мне сказали, что OpenGL не вычисляет нормали. Но тогда как я получил правильные световые эффекты с тенями на модели? Я ошибаюсь, думая, что нормали нужны для теней или OpenGL действительно вычисляют нормали?
Очень интересное объяснение. Спасибо. –