2009-08-21 12 views
6

Imagínese que usted tiene uno de estos tipos:OpenGL glColorPointer repite colores?

alt text http://www.codesampler.com/d3dbook/chapter_05/chapter_05_files/image007.jpg

Aka GL_TRIANGLE_STRIP. Si quieres que el color usando diferentes colores, se puede utilizar:

glColorPointer(4, GL_UNSIGNED_BYTE, 0, colorArray); 
glEnableClientState(GL_COLOR_ARRAY); 

Cuando todos los "elementos" de la matriz de color coincide con un punto de vértice en la tira. Pero, ¿y si los colores solo se alternan entre dos colores diferentes? Se siente innecesario definir un color para cada vértice, si solo hay dos colores diferentes "reales". Así que mi pregunta es si es posible definir un colorArray con solo dos colores, y de alguna manera hacer que OpenGL alternaría entre esos dos cuando esté en bucle sobre el arreglo de vértices.

Y sí Soy un novato total en OpenGL así que quizás es una pregunta estúpida ...

Respuesta

3

Usted puede hacer esto mediante el uso de OpenGL Color Index Mode. Sin embargo, tenga en cuenta que, en mi experiencia, esto en realidad es más lento en la mayoría de las tarjetas gráficas modernas que solo especificar cada color de vértice.

En el modo de índice de color, envía una matriz de colores por separado, luego cada vértice especifica un índice en la matriz, en lugar de un rgb/rgba completo. Es más eficiente con la memoria, pero no está tan optimizado en la mayoría de los controladores de hardware.

3

Puede usar un sombreado de vértices para hacer esto enviando un indicador booleano para cada vértice que describa el color que será. Realmente, lo más simple/más rápido es, probablemente, solo enviar el color para cada vértice.

Si opengl tiene la capacidad de tener múltiples flujos de vértices e índices que podrían funcionar (pero que probablemente tampoco valdrían la pena).