OpenGL zeichnet nur 72 FLächen
-
Hallo Leute,
hab ein sonderbares Problem bei dem ich nicht weiterkomme.
Wenn ich einen Cylinder Zeichne dann zeichnet OpenGL
nur maximal 72 Flächen. Das sonderbare ist, dass die Schleife zum Zeichnen
jedoch die Anzahl an "Faces" durchläuft (z.B. 74).
(Ein Face ist bei mir eine Fläche des jeweiligen Objekts (Z.B. Quad)
mit den Koordinaten.d.h. die letzten 2 Flächen (bei 74 Teilern) werden einfach nicht eingeblendet.
Face culling ect. hab ich schon versucht!
Wär toll wenn mir jemand einen Tip hätte, hab an allen Stellschrauben schon gedrehtAnbei der stark vereinfachte Code um die Oberfläche eines Cylinders mit Höhe = 1
zu Zeichnen.Viele Güßr und Vielen Dank im vorraus
Christian#region TEST_DRAW float slices = 73; float angleOffset = 2 * (float)Math.PI / slices; // Create Slices for (double alpha = 0; alpha < (2 * Math.PI); alpha += angleOffset) { float x1; float z1; float x2; float z2; if (alpha + angleOffset < 2 * Math.PI) { x1 = (float)Math.Cos(alpha); z1 = -1 * (float)Math.Sin(alpha); x2 = (float)Math.Cos(alpha + angleOffset); z2 = -1 * (float)Math.Sin(alpha + angleOffset); } else { x1 = (float)Math.Cos(alpha); z1 = -1 * (float)Math.Sin(alpha); x2 = (float)Math.Cos(0); z2 = -1 * (float)Math.Sin(0); } gl.Begin(OpenGL.QUADS); gl.Vertex(x1, 0, z1); gl.Vertex(x2, 0, z2); gl.Vertex(x2, 1, z2); gl.Vertex(x1, 1, z1); gl.End(); } #endregion TEST_DRAW
-
Hallo Nochmal,
hab grad herausgefunden, wenn ich das gl.Begin() & gl.End() vor bzw. nach der
Schleife setze, dann werden alle Gezeichnet?!Wobei warum und wiso ist mir mega fraglich?!
72 ist ja eig keine 2er Potenz... ergo kann ich
wenig rückschlüsse ziehen?!Grüße
Christian
-
Ich kann dir zwar nicht sagen warum es bei 72 aufhört aber es wäre sowieso sinnvoller es anders zu lösen.
glBegin (und die folgenden Befehle) haben ohnehin eine nicht sehr gute Performance, da es bei jedem Frame von vom CPU zum GPU geschickt wird. Daher möglichst wenig Aufrufe damit durchführen.Ansonsten in Zukunft am besten per VertexArray darstellen (oder Vertex Elements).