Zeichnen Sie einen Kreis in android mit opengl-es-Ergebnisse in einem Quadrat
Ich versuche einen Kreis zu zeichnen in opengl-es-mit dem folgenden code. Es schafft eine Reihe von Punkte um einen Kreis herum. Wenn ich drucken Sie die Werte, die in der vertex-array, es kann gesehen werden, dass Sie form Punkte um einen Kreis herum.
//Create verticies for a circle
points=40;
vertices = new float[(points+1)*3];
//CENTER OF CIRCLE
vertices[0]=0.0f;
vertices[1]=0.0f;
vertices[2]=0.0f;
for (int i = 3; i<(points+1)*3; i+=3){
double rad = deg2rad(i*360/points);
vertices[i] = (float) (Math.cos(rad));
vertices[i+1] = (float) (Math.sin(rad));
vertices[i+2] = 0;
}
//vertexBuffer is filled with verticies
Und die Aufrufe von opengl in meiner Zeichnung Funktion:
//IN MY DRAWING FUNCTION:
gl.glPushMatrix();
gl.glTranslatef(x, y, 0);
gl.glScalef(size, size, 1.0f);
gl.glColor4f(1.0f,1.0f,1.0f, 1.0f);
gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vertexBuffer);
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
gl.glDrawArrays(GL10.GL_TRIANGLE_FAN, 0, points/2);
gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
gl.glPopMatrix();
Jedoch bekomme ich nie einen Kreis auf den Bildschirm gezeichnet, immer nur ein Quadrat. Ich bin sehr verwirrt, jede Hilfe ist willkommen 🙂
- Für die anderen Lesen diese Frage, Sie sollten Bedenken, dass eine Möglichkeit zum Debuggen, könnte dies zur Verringerung der Zahl der Iterationen in der Schleife (auch eine Wiederholung) und sehen, was passiert und wie es schief geht, mit mehr und mehr Iterationen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
einem Ding, das aussieht, falsch ist die Berechnung der
rad
. Versuchen Sie zu modifizieren, um so etwas wie:Müssen Sie dividieren durch
points*3
weil diei
Zähler wird immer um eins erhöht, von 3 auf jeder iteration. Drucken Sie den Wert derrad
bei jeder iteration und stellen Sie sicher, dass Sie immer die Werte der Inkrementierung zwischen 0 und 2 * PIEDIT: möglicherweise müssen Sie auch ändern Sie die Richtung des Kreises (ich bin mir nicht sicher, an der Spitze von meinem Kopf). aber wenn die oben nicht wiedergegeben wird alles versuchen um es umzudrehen:
Auch, wie es aussieht, bist du nur Rendern die Hälfte der Punkte in der
glDrawArrays
nennen.Unkompliziertem.