ah ok. Ich kann also zwei mal rendern. und erst den zweiten renderdurchgang rausgeben.
Wusste nicht dass man mit glReadPixel die Farbe auch auslesen kann, ohne das es mit Swapbuffer ausgegeben wird. Das ist ja super .
Hab im Wiki auch nichts über die Funktion gefunden. Ich versuch mal zu googlen.
ok. Das war der Fehler . Hab den dritten und vierten parameter = 1 gesetzt.
Habe aber noh ein problem.. habe dafür mal den selektionstest hochgeladen:
Er gibt nun als Form1.Caption 0 aus, wenn man aufs schwarze trifft und 1 wenn man aufs rote trifft (rechte maustaste fürht die selektion aus)
Wenn ich auf rot (mit der rechtenmaustaste) klick, kommt der wert 0 raus (also meint er es wäre schwarz). wenn ich genau unter das viereck klicke kommt der wert 1 (er meint es wäre Rot) .. da muss irgendwas "verrutscht" sein.
hängt das vielleicht mir glPixelStore, glPixelTransfer oder glPixelMap. ab ?
Ich hab den Fehler
ich habe vergessen den yWert der Mausposition vom gesamtem ClientHEight abzuzien .. lol .. wieso bin ich da nich früher drauf gekommen
hab ein Problem und zwar reichen mir die Farbwerte nicht aus um eine Selection durchzuführen.
Ich habe mein Level und kleinere VBOlisten unterteilt.
array of array of VBOlisten. den r und g wert der Farben , habe ich nun verwendet um zu bestimmen um welche VBOliste es handelt (zweidimensionales array) .. hier reicht mir das intervall von {0.01-1}.
Nun muss ich aber noch schauen welches Dreieck im jeweiligen VBO gemeint ist. Dazu wollte ich den b wert der Farbe verwenden. Jetz reicht mir aber das intervall 0.01, 0.02, 0.03 - 1 nicht aus da in jedem VBO 49x49 verschiedene "Farben" vorhanden sein soll (also knapp 2500).
Habe mir dann überlegt, dass ich einfach kleinere Zahlen nehme 0.0001, 0.0002 - 1. So genau Arbeitet der Farbpuffer leider nicht.
Ist meine Idee der Selektion hier fehl am platz ? .. oder ist mein Ansatz falsch ?
Die Farben am besten als Byte mit glColor4ub übergeben. Dann gibt es auch keine Probleme mit der Genauigkeit und es sind trotzdem genug Farben vorhanden. Selbst wenn man Alpha weglässt sind es noch ca 16 Millionen.
Man kann einen Integer auch direkt als Farbe verwenden mit glColor4ubv(@i); Die Aufteilung der Bits in dem Integer muss nicht unbedingt den Farbkomponenten entsprechen. Für den Flächenindex kann man z.B. 12 Bit verwenden. Das reicht für 4096 Flächen. Die restlichen 12 Bit (insgesammt 24 ohne Alpha) können dann die Zeilen und Spalte jeweils mit 6 Bit erhalten, so dass man insgesammt auf maximal 64x64 VertexBuffer kommt.
Die Interleaved Arrays sind eh zu eingeschränkt. Man kann fast jedes beliebige Format benutzen. Nach dem Binden des Buffers legt man glVertexPointer,glColorPointer,glNormalPointer und glTexCoordPointer den Aufbau fest.
Der letzte Wert ist jeweils das Offset im Vertex record.
ich weiß nicht ob ich fr die Frage einen neuen Treat auf machen soll.
Habe noch ne frage bezüglich der Größe der VBOS ..
Ein VBO fasst bei mir 49*49*6*SizeOf(TVertex).
Davon habe ich pro level bis zu 70*70 VBOs .. (wobei das wäre schon ein Monster großes Level)
habe mein Level in so viele VBO genommen und FrustrumC zu nutzen, um die Performance3 zu steigern. Jetz habe ich aber auch gehört, dass so viele VBOs nicht gut für performance sind.. stimmt das ? .. hab ich zu viele VBOs ?
Sorry .. muss nochmal ne andere Frage stellen ...
und zwar zu dem hier.
glTexCoordPointer(2,GL_FLOAT,sizeof(TVertex),Pointer(0));
glColorPointer(4,GL_UNSIGNED_BYTE,Sizeof(TVertex),Pointer(8));
glNormalPointer(GL_FLOAT,sizeof(TVertex),Pointer(12));
glVertexPointer(3,GL_FLOAT,sizeof(TVertex),Pointer(24));
ich hab mich gewundert, warum der Alphawert immer auf 255 ist. und da ist mir aufgefallen dass ich wenn ich
Vertex^.a := 3; schreibe, dass da der Rotwert geändert wird. rga- Werte kann ich nicht ändern .. ist der Speicher v errutscht ?
Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast
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.