glDrawElements con normal constante

Solo tenía curiosidad por saber si puede especificar una normal constante al dibujar con una sola llamada de DrawElements. Estoy usando VAO y VBO, así que no es ese problema porque los cargo una vez para todos los vértices y solo almaceno la ID de VBO, pero podría liberar algo de memoria en la tarjeta gráfica ...

esta es la forma en que necesita cargar datos en gráficos:

glBindBuffer(GL_ARRAY_BUFFER,VBO[Grid][Normals]);
glNormalPointer(GL_FLOAT, sizeof(vector3f), 0);
glEnableClientState(GL_NORMAL_ARRAY);

Como especifico una cuadrícula de 5x5x5 y luego uso índices para crear superficies cúbicas, no es mucho para lidiar con normales y usar alguna constante ayudaría :)

preguntado el 08 de enero de 11 a las 16:01

¿A qué tipo de hardware se dirige? ¿Alguna razón para no usar un sombreador de vértices que obtiene lo normal como entrada uniforme (o tiene el código normal codificado)? -

Por favor, especifique siempre su versión de OpenGL de destino. -

1 Respuestas

Puede implementar la función usando un sombreador de vértices que especifique siempre la misma normal. Entonces, solo se requiere especificar lo normal como uniforme, ya que es lo mismo para esos vértices.

Respondido el 08 de enero de 11 a las 21:01

Sí, eso debería hacer. Ahora estoy usando una canalización fija porque aún no estoy en la etapa en la que necesito usar sombreadores, pero tal vez sea más fácil lanzar ese código para cargar sombreadores allí y crear un sombreador simple ... - Cuervo

Sí, hay un pequeño esfuerzo antes de comenzar con los sombreadores, pero le permiten implementar el mejor algoritmo sin tener que trabajar con la implementación de la canalización fija. - Luca

Incluso sin tener que trabajar alrededor de las limitaciones de la canalización fija, una vez que empiece a utilizar varias funciones de canalización fijas juntas, probablemente será más fácil con los sombreadores. - Oso pardo

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.