static der ændre farver (openGL)

Tags:    c++

Er der en der kan sige mig hvorfor
Fold kodeboks ind/udKode 

giver andre farver en
Fold kodeboks ind/udKode 


her er koden:
Fold kodeboks ind/udKode 


farven ændre sig også hvis jeg f.eks fjerner static fra "static GLfloat points[]"
Det er selvfølgelig de samme farver der bliver brugt, men i forskellige kombinationer.



5 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 2 karma
Sorter efter stemmer Sorter efter dato
Umiddelbart virker det som om dit problem er at antallet af farver ikke matcher antallet af vertexes.



Jeg vil indroemme fra start at jeg ikke helt ved praecist hvorfor - men jeg tror nu ikke paa den foerste forklaring! ;-)
Ideen med glVertexPointer, glColorPointer osv. er at man bruger variabler der kan modificeres run-time! Hvis du vil bruge static variabler vil jeg anbefale dig at bruge glDisplayList(), de er desuden ogsaa meget hurtigere! Jeg vil til enhver tid give dig ret i at det virker meget underlig at der skulle vaere forskel paa at bruge en ikke-static og en static array! Der findes ogsaa lign. ARB -extention funktioner der i princippet fungere paa samme maade som glVertexPointer osv. De skulle, efter sigende, bare vaere meget hurtigere!

NB: Umiddelbart vil jeg gerne tro paa Thomases forklaring! Dine farver matcher ikke med antallet af dine vertex'er, og umiddelbart kunne man tro at resterende vertexer derfor bliver assignet til noget 'garbage' data! Men som sagt er jeg ikke helt sikker paa min sag! ;-)

Held og Lykke
Soeren Klit Lambaek
University of Teessside, UK

[Redigeret d. 06/10-05 12:46:17 af Søren Klit Lambæk]



Ved at sætte static foran lokale variable bliver variablen kun initialiseret én gang; når programmet starter. Hvis der ikke sættes static foran bliver variablen initialiseret hver gang funktionen kaldes. Så der må være nogen(/noget) der ændrer på variablen.

Jeg kender ikke openGL



fandt det her på msdn:

Vertex attributes that are modified by glDrawElements have an unspecified value after glDrawElements returns. For example, if GL_COLOR_ARRAY is enabled, the value of the current color is undefined after glDrawElements executes. Attributes that aren't modified remain unchanged.

kan det have noget med sagen at gøre?

eller kan det være fordi der er 8 punkter men kun tre farver, og at de resterende 5 derfor bliver mystiske?

[Redigeret d. 13/07-05 21:05:15 af Rune]



Jeg tror mest på den første forklaring.



t