OpenGL - Dreieck mit Farbverlauf

  • 1 Antworten
  • Letztes Antwortdatum
M

Maiworm

Neues Mitglied
0
Hallo,

ich probiere gerade ein wenig Dreiecke mit Farbverlauf in OpenGL darzustellen. Es funktioniert auch soweit, nur sind die Farben irgendwie blasser als ich es mir wünsche. Wenn ich z. Bsp. alle drei Ecken grün zeichne, so bekomme ich später die Farbe RGB = 82,113,0 statt 255,255,0.

Hier der Code:
Code:
       GL10 gl = glGraphics.getGL();
       
       gl.glDisable(GL10.GL_BLEND);
    
       FloatBuffer vertices;
       int VERTEX_SIZE = (2 + 4) * 4;
       
       ByteBuffer bytebuffer = ByteBuffer.allocateDirect(12*VERTEX_SIZE);
       bytebuffer.order(ByteOrder.nativeOrder());
       vertices = bytebuffer.asFloatBuffer();

       vertices.put( new float[] { xl, yu, f3.rot ,f3.gruen , f3.blau,1f,
                                      xr, yu, f4.rot ,f4.gruen , f4.blau,1f,
                                      xm, ym, f5.rot ,f5.gruen , f5.blau, 1f});
       vertices.put( new float[] { xr, yo, f2.rot ,f2.gruen , f2.blau,1f,
                                      xr, yu, f4.rot ,f4.gruen , f4.blau,1f,
                                   xm, ym, f5.rot ,f5.gruen , f5.blau, 1f});
       vertices.put( new float[] { xr, yo, f2.rot ,f2.gruen , f2.blau,1f,
                                   xl, yo,  f1.rot ,f1.gruen , f1.blau,1f,
                                   xm, ym, f5.rot ,f5.gruen , f5.blau, 1f});
       vertices.put( new float[] { xl, yu, f3.rot ,f3.gruen , f3.blau,1f,
                                   xl, yo, f1.rot ,f1.gruen , f1.blau,1f,
                                   xm, ym, f5.rot ,f5.gruen , f5.blau, 1f});

       vertices.flip();
       
       gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
       gl.glEnableClientState(GL10.GL_COLOR_ARRAY);
       
       vertices.position(0);
       gl.glVertexPointer(2, GL10.GL_FLOAT, VERTEX_SIZE, vertices);
       vertices.position(2);
       gl.glColorPointer(4, GL10.GL_FLOAT, VERTEX_SIZE, vertices);
       
       gl.glDrawArrays(GL10.GL_TRIANGLES,0,3);
       gl.glDrawArrays(GL10.GL_TRIANGLES,3,3);
       gl.glDrawArrays(GL10.GL_TRIANGLES,6,3);
       gl.glDrawArrays(GL10.GL_TRIANGLES,9,3);
Die werte fx.rot, fx.gruen und fx.gelb sind float-Werte, die ich für gelb zum Beispiel mit 1,1,0 belege.

Hat einer eine Idee, was ich falsch mache bzw. wie ich es richtig machen kann?

Hier das Ergebnis:

farbengm8ey2plon.png auf fotos-hochladen.net
farbengm8ey2plon.png
 
Nachtrag: Wenn ich den Standby-Button vom Handy drücke und danach wieder zur App wechsle, dann werden die Farben richtig gezeichnet. Habe in der OnResume-Methode aber nichts besonderes stehen!
 
Zurück
Oben Unten