geht glDrawArrays mit folgender Struktur?
-
Hallo Leute,
Möchte die Punkte meiner Dreicke zusammen in einem Struct ablegen und auch rendern können.Ich dachte an etwa so was -bekomme es aber nicht
typedef struct{ float x,y,z; }Point; typedef struct{ Point P1,P2,P3; }Face; Facearr=new Face[100]; glVertexPointer(3, GL_FLOAT,sizeof(Face),&Facearr[0].P1.x); glDrawArrays(GL_TRIANGLES,0,100);
-
wenn ich mich recht erinnere dann gibst du bei glDrawArrays(GL_TRIANGLES,0,100); an wieviel float werte du in dem array hast.
du hast aber nicht 100 array werte sondern 900
-
Nein du erinnerst dich nicht richtig . die Arraygröße gibt man an (der Pointer hat ja die richtige Größe von 9 floats).
das zum Beispiel würde funktionieren:typedef struct{ float x,y,z; }Point; Pointarr=new Point[100]; glVertexPointer(3, GL_FLOAT,sizeof(Point),&Pointarr[0].x); glDrawArrays(GL_TRIANGLES,0,100);
das ist aber jeweils nur ein Vertex des Triangle.
Ich brauche die drei Vertexe zusammen im Array.
-
Warum müsst ihr überhaupt erinnern und schaut nicht einfach in die Doku? Daraus sollte erkennbar sein, das hier verschiedene Parameter falsch angegeben sind.
Bye, TGGC (Für echte Fans)
-
" Warum müsst ihr überhaupt erinnern und schaut nicht einfach in die Doku? Daraus sollte erkennbar sein, das hier verschiedene Parameter falsch angegeben sind."
Ja aber das ist ja nun nicht Sinn des Forum das man sich hier Verweise auf Dokus abholt.Welche Parameter sind denn nun falsch?
Die Code-Beispiel sind eigentlich nur Gedankengänge und müssen nicht so umgesetzt werden.
Hintergrund ist der, dass ich in meinem Programm viele Speicherzugriffe habe wo ich jeweils alle Eckpunkte einschließlich Normale für Berechnungen brauche.
Momentan muss ich jedoch für jedes Triangle mindestens dreimal auf das Array zugreifen(drei Eckpunkte).
Nun wollte ich die Daten so legen das ich nur einmal auf das Array zugreife und alle drei Eckpunkte und Normale in einem Zug habe (erhoffe mir dadurch ein bisschen speed).
Gleichzeitig soll aber das selbe Array auch zum rendern benutzt werden (meinet wegen auch mit mehren Zugriffen--soll nur funktionieren).
-
Ich weiss die genauen Fehler nicht. Aus den widersprüchlichen Aussagen ist aber zu erkennen, das es wohl welche geben muss. Es ist wenig sinnvoll, wenn ich über die richtigen Parameter spekulieren würde. Ja aber das ist ja nun nicht Sinn des Forum das ich mir die Doku besorge und für andere lese und dann hier Vorträge darüber abgebe. Das sollte der Betroffene schon selbst erledigen (oder mir die Arbeitszeit entsprechend vergüten!). Warum sind eigentlich wieder diese Metadiskussionen in? Sie bringen nichts.
Den Grundgedanken "Zugriffe sparen", kann ich nicht unbedingt teilen. f[5].p2.x und p[16].x sollte im Code so ziemlich das gleiche bewirken, das erstere könnte auch langsamer sein, da eine zusätzliche Indirektion (heisst es so?) nötig ist. Es wird jedenfalls gleichviel Speicher gelesen/geschrieben, was i.A. der Bottleneck ist.
Bye, TGGC \-/