Pergunta

Imagine que você tem um desses caras:

text alt
(fonte: codesampler.com )

Aka GL_TRIANGLE_STRIP. Se você quer colorir usando cores diferentes, você pode usar:

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

Onde cada "item" na matriz de cor corresponde a um ponto de vértice na faixa. Mas e se as cores apenas alternar entre duas cores diferentes? Sente desnecessário para definir uma cor para cada vértice, se há apenas dois "reais" cores diferentes. Então, minha pergunta é se é possível definir um colorArray com apenas duas cores na mesma, e de alguma forma fazer alternativo OpenGL entre os dois quando é looping sobre a matriz de vértice.

E sim, eu sou um noob completo em OpenGL talvez por isso esta é uma pergunta estúpida ...

Foi útil?

Solução

Você pode fazer isso usando OpenGL modo de índice Cor . No entanto, estar ciente de que, na minha experiência, isso realmente é mais lento em mais cartão de gráficos modernos do que apenas especificando cada cor de vértice.

No modo de índice de cor, você envia uma matriz de cor separado, então cada vértice especifica um índice para a matriz, em vez de um rgb completo / rgba. É mais eficiente de memória, mas não tão otimizado na maioria dos drivers de hardware.

Outras dicas

Você pode usar um shader de vértice para fazer isso através do envio de um sinalizador booleano para cada vértice descrevendo o que a cor a ser. Realmente a / coisa mais simples a mais rápida é provavelmente apenas para enviar a cor para cada vértice.

Se opengl tinha a capacidade de ter múltiplos fluxos de vértices e índices que o trabalho pode (mas também provavelmente não valer a pena).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top