Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 18, 2025 00:13

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 12 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: OpenGL ES und Farben der VErtices
BeitragVerfasst: Mo Mär 15, 2010 18:52 
Offline
DGL Member

Registriert: So Mär 14, 2010 16:53
Beiträge: 24
Hallo alle zusammen. Ich versuche seit ca. 3 Tagen den Vertices farben zu verpassen. ich habe zwar geschafft, den ganzen Models eine Farbe zu verpassen, wie kann man aber einem Model viele Farben verpassen? Ich habe mit mit Blende einen Cuber erstellt (ganz normalen mit 6 Seiten und 8 Punkten. Jeder Punkt muss jetzt Farbe bekommen.

Habe ein tutorial gelesen im Internet und alles nach der Einleitung gemacht, jedoch ohne Erfolg. Kann mir jemand sagen was ich falsch gemacht habe.

Hier mein Code:

Buffer für Colors:

Code:
    float[] colors = {
             1f, 0f, 0f, 1f, // vertex 0 red
             1f, 0f, 0f, 1f, // vertex 1 green
             1f, 0f, 0f, 1f, // vertex 2 blue
             1f, 0f, 0f, 1f, // vertex 3 magenta
             1f, 0f, 0f, 1f, // vertex 0 red
             1f, 0f, 0f, 1f, // vertex 1 green
             1f, 0f, 0f, 1f, // vertex 2 blue
             1f, 0f, 0f, 1f, // vertex 3 magenta
     };


Dieses Array übergebe ich dem Buffer: Genau wie bei Vertices und Normalen, Indices ....
Code:
      bb = ByteBuffer.allocateDirect(colors.length * 4);
      bb.order(ByteOrder.nativeOrder());
      colorBuffer = bb.asFloatBuffer();
      colorBuffer.put(colors);
      colorBuffer.position(0);


Hier aktiviere ich das ganze und übergebe der GK
Code:
   gl.glVertexPointer(3, GL10.GL_FIXED, 0, vertices);   //<-- Einzelne Punkte
      gl.glNormalPointer(GL10.GL_FIXED, 0, normals);         // Normalen
      gl.glColorPointer(4, GL10.GL_FLOAT, 0, colorBuffer); // <<-- Farben

      gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
      gl.glEnableClientState(GL10.GL_NORMAL_ARRAY);
      gl.glEnableClientState(GL10.GL_COLOR_ARRAY); //<<-- Farben Aktivieren

      gl.glDrawElements(GL10.GL_TRIANGLES, indices.limit(), GL10.GL_UNSIGNED_SHORT, indices);
      gl.glColor4f(0.5f, 0.5f, 1.0f, 1.0f);
      gl.glDisableClientState(GL10.GL_COLOR_ARRAY);


Woran konnte das Problem liegen, den das Würfel zeichnet er mir ohne Problem und ich kann ihn rotieren und sonst was nicht ohne Probleme nur mit Farben klappt es nicht. Bin langsamm verzeweifelt


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mo Mär 15, 2010 19:21 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Um welche Version von OpenGL ES geht es hier? Wie sieht dein Shader aus?

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Mär 17, 2010 08:04 
Offline
DGL Member

Registriert: So Mär 14, 2010 16:53
Beiträge: 24
HI.

Ich benutze OpenGL ES 2.0, es wir keine andere Version von der Android Platform unterstüzt. Was meinst du mit Shader? Meinst du die einstellungen und so?

So sehen die aus:
Im onDrawFrame
Code:
gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
gl.glLoadIdentity();   
gl.glEnable(GL10.GL_CULL_FACE);
gl.glFrontFace(GL10.GL_CCW);
gl.glCullFace(GL10.GL_BACK);

// Licht Einstellungen
gl.glEnable(GL10.GL_LIGHTING);
gl.glEnable(GL10.GL_LIGHT0);
gl.glLightfv(GL10.GL_LIGHT0, GL10.GL_POSITION, lightPosition, 0);



Im onSurfaceCreated:

Code:
   
        gl.glClearColor(0, 0, 0, 0); //<-- Transparenet hintergrund
        gl.glDisable(GL10.GL_DITHER); // Disable dithering ( NEW )
   gl.glEnable(GL10.GL_TEXTURE_2D); // Enable Texture Mapping
   gl.glShadeModel(GL10.GL_SMOOTH); // Enable Smooth Shading
   gl.glClearDepthf(1.0f); // Depth Buffer Setup
   gl.glEnable(GL10.GL_DEPTH_TEST); // Enables Depth Testing
   gl.glDepthFunc(GL10.GL_LEQUAL); // The Type Of Depth Testing To Do


Richtig eingestellt?


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Mär 17, 2010 10:24 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Ähm, wenn ich da nicht völlig falsch informiert bin setzt OpenGL ES 2.0 zwingend einen Vertexshader sowie einen Fragmentshader voraus. Die FixedFunction-Pipeline gibt es da nicht mehr, z.B. glLoadIdentity oder glLightfv sollte es nicht mehr geben.

Also entweder:
  • Du verwendest irgendein komisches Framework welches OpenGL ES 1.x nachbaut.
  • Du hast gar kein OpenGL ES 2.0

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Mär 17, 2010 10:40 
Offline
DGL Member

Registriert: So Mär 14, 2010 16:53
Beiträge: 24
OK. Was soll man jetzt machen? So wie ich gelesen habe sollte es openGL ES 2.0 sein, aber kann sein, dass ich openGL ES 1.0 benutze, wegen GL10, denke ich. Ich finde sonst nicht so viele Info darüber. FrameWork benutze ich nicht, ich mache es alle in Java und komplett selbst. Ich weis echt nicht was ich weiter machen soll, sitze schon seit Samstag dadran.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Mär 17, 2010 10:46 
Offline
DGL Member

Registriert: So Mär 14, 2010 16:53
Beiträge: 24
Habe grade gefunden, es sollte OpenGL ES 1.0 sein, wegen GL10. Aber es hilft mir grade nicht weiter.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Mär 17, 2010 10:55 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Was verwendest du den um in Java an die OpenGL API zu kommen? Vielleicht JOGL oder sowas?

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Mär 17, 2010 11:04 
Offline
DGL Member

Registriert: So Mär 14, 2010 16:53
Beiträge: 24
Hi

Ich implementiere (also implements Renderer) das Interface Renderer, er Fordert GL10, das ist auch von OpenGL ES 1.0. Dabei importiere ich die bib. EGL10. import javax.microedition.khronos.egl.EGL10;


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Mär 17, 2010 11:19 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Ist es eigentlich Absicht, dass die Farben im Colorbuffer alle gleich (rot) sind? Was genau siehst du eigentlich? Ist der Würfel vielleicht einfach nur schwarz weil die Lichtquelle zu weit weg ist oder dein Licht keinen Rot-Anteil (*) enthält? Stell mal die Clear-Color auf irgendeine Farbe die sonst nirgendwo vorkommt.


(*) da dein Würfel komplett Rot ist brauchst du rotes Licht um den zu sehen, die Farben werden ja multipliziert...

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Mär 17, 2010 12:36 
Offline
DGL Member

Registriert: So Mär 14, 2010 16:53
Beiträge: 24
Hi.

Ja der Würfel ist komplett schwarz, aber nur wenn ich gl.glCullFace(GL10.GL_FRONT); mache, wenn ich gl.glCullFace(GL10.GL_BACK);mache dann ist er komplett grau. Ja es war absicht jede Seite rot zu machen, wollte einfach irgendeine Farbe nehmen, damit man es schnell sieht.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Mär 17, 2010 13:00 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Schalte mal das Licht aus um auszuschließen das es irgendwie eine verkehrte Lichtfarbe ist oder so.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Mär 17, 2010 18:01 
Offline
DGL Member

Registriert: So Mär 14, 2010 16:53
Beiträge: 24
Hi. Habe das Licht jetzt abgeschaltet und ist nichts zusehen. Kein Würfel nichts.
Habe halt das Hier auskommentiert:

// gl.glEnable(GL10.GL_LIGHTING);
// gl.glEnable(GL10.GL_LIGHT0);
//gl.glLightfv(GL10.GL_LIGHT0, GL10.GL_POSITION, lightPosition, 0);

Demle es ist richtig, nach meine Kenntnisse ist es das Licht.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 12 Beiträge ] 
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: Majestic-12 [Bot] und 4 Gäste


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.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.009s | 15 Queries | GZIP : On ]