Ich hab mal ne Frage zu den Farben unter OGL, wie werden die da gespeichert? Bei D3D war es so das man einen longword (=dword,cardinal) nehmen konnte, mit je einem Byte (0-255) für r,g,b,a ; das kommt mir bei OGL irgendwie anders vor...
Da werden Singles, verwendet.... Geht das nicht auch anstelle des "Verhältnisses" mit den Absoluten Farbwerten (0-255 anstelle von 0.0-1.0), also kann ich irgendwie die longwords verwenden?
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Doch das geht, denn immerhin bietet OpenGL ja verschiedene Möglichkeiten der Parameterübergabe : <a href='http://www.cevis.uni-bremen.de/~uwe/opengl/glColor.html' target='_blank'>http://www.cevis.uni-bremen.de/~uwe/opengl...gl/glColor.html</a>
Da kannst du dir deinen favorisierten Parametertypen raussuchen...die Auswahl ist da nämlich recht groß, und über glColor3b kannst du auch Bytes als Farbwerte übergeben.
Dein Longword kannst du auch verwenden, wenn du glColor3bv (viertes Byte keine Funktion) oder glColor4bv (viertes Byte ist Alphakanal) mit einem Zeiger auf dein Longword verwendest...
Etwas offtopic: hab mir erst gestern abend wieder mal ein DirectX Tutorial reingezogen - heilige Umständlichkeit! Alles im vorhinein in irgendwelchen unübersichtlichen Strukturen unterbringen zu müssen, scheint mir noch immer reichlich kontraproduktiv zu sein (vereinfacht aber wahrscheinlich die Treiberprogrammierung). Da weiß man dann OpenGL erst so wirklich zu schätzen, dessen Programmierschnittstelle meiner Ansicht nach um Ecken flexibler ist.
Exakterweise solltest du wahrscheinlich eher glColor3ubv bzw. glColor4ubv verwenden, damit deine Werte tatsächlich als im Bereich von 0 - 255 (und nicht -128 bis 127) liegend interpretiert werden. Aber da kommst du eh noch selbst drauf .
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Probiers mal hiermit : <!--pas--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Delphi-Source </td></tr><tr><td id='CODE'><!--pas1--><pre><span class='reserved'>var</span> Col : DWORD; [...] Col := $FFFFFFFF; glcolor4ubv(@Col);</pre><!--pas2--></td></tr></table><span class='postcolor'><!--pas3--> Das hat bei mir im Gegensatz zu deinem Code ohne Probs geklappt.Du machst mit deinem pglubyte($ffffffff) nämlich einen ungültigen Typecast, der die Variablengrenzen eines PGLUBytes (=^Char) verletzt und so mit ner Exception endet.Denn für eine Variable vom Typ PGLUByte reserviert der Compiler ja nur 1 Byte (=Größe eines Chars), du versuchst dort allerdings 4 Byte (=Größe eines DWORDs) reinzupressen, was natürlich mit einer Speicherverletzung endet.
Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.