Domanda

Immaginate che hai uno di questi ragazzi:

alt text
(fonte: codesampler.com )

Aka GL_TRIANGLE_STRIP. Se volete il colore utilizzando colori diversi, è possibile utilizzare:

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

Dove ogni "punto" nella matrice colore corrisponde a un punto di vertice nella striscia. Ma cosa succede se i colori appena si alternano tra i due colori diversi? Sembra necessario definire un colore per ogni vertice, se ci sono solo due "veri" colori diversi. Quindi la mia domanda è se è possibile definire una colorArray con solo due colori in esso, e in qualche modo rendere alternano opengl tra i due quando è il ciclo su un array di vertice.

E sì io sono un noob completo a OpenGL così forse questa è una domanda stupida ...

È stato utile?

Soluzione

È possibile farlo utilizzando OpenGL colori modo dell'indice . Tuttavia, essere consapevoli del fatto che, nella mia esperienza, questo in realtà è più lento in più schede grafiche moderne di una semplice specificare ogni colore vertice.

Nel modo di indice di colore, si invia una matrice di colore diverso, quindi ogni vertice specifica un indice nella matrice, invece di un intero rgb / RGBA. E 'più efficiente della memoria, ma non come ottimizzato nella maggior parte dei driver hardware.

Altri suggerimenti

È possibile utilizzare un vertex shader per fare questo inviando un flag booleano per ogni vertice descrivere di che colore fosse. In realtà il più semplice / cosa più veloce è probabilmente solo a presentare il colore per ogni vertice.

Se OpenGL ha avuto la possibilità di avere più flussi di vertice e gli indici che potrebbero funzionare (ma anche probabilmente non sarebbe valsa la pena).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top