Android: OpenGL ES Artefakte.

BobBob

Newbie
Registriert
Juli 2011
Beiträge
5
Hallo Leute,

habe foglendes Problem:
Wenn ich 3D Objekte zeichne, kann man komische Artefakte sehen. Man sieht sie deutlicher wenn man die dreht.

sgi54qxv2o3rtw7dxal.png

6y51u7edqfalpdhwu45h.png



Hat jemand eine Ahnung woran das liegen könnte?
 
Wie soll das jemand nur anhand von zwei seltsamen Screenshots bewerten können?
 
Es könnte sein, dass das jemand schon mal gesehen hat.
Und seit wann ist eine Anwort auf eine Frage eine andere Frage?
 
poste doch mal den quellcode ..
finds auch komisch, dass wir nen fehler finden sollen ohne zu wissen wo man suchen kann^^
 
Teil 1 OpenGL wird initialisiert:
gl.glClearColor(139.0f/255.0f, 214.0f/255.0f, 235.0f/255.0f, 1.0f);

gl.glEnable(GL10.GL_DEPTH_TEST);

float lightPosition[] = { 100.0f, 0.0f, 100.0f, 0.0f };
gl.glLightfv(GL10.GL_LIGHT0, GL10.GL_POSITION, lightPosition, 0);

gl.glEnable(GL10.GL_LIGHTING);
gl.glEnable(GL10.GL_LIGHT0);


gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);

gl.glEnable(GL10.GL_COLOR_MATERIAL);

gl.glEnable(GL10.GL_NORMALIZE);
gl.glEnable(GL10.GL_BLEND);
gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);

Scene wird gesetzt:
gl.glViewport(0, 0, width, height);
float ratio = (float) width / height;
gl.glMatrixMode(GL10.GL_PROJECTION);
gl.glLoadIdentity();

GLU.gluPerspective(gl, 67, ratio, 1, 5000);

GLU.gluLookAt(gl, _eye[0], _eye[1], _eye[2], 0, 0, 0, 0, 1, 0);

und gerndert:

gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
gl.glMatrixMode(GL10.GL_MODELVIEW);
gl.glLoadIdentity();

float v = size / 2;


float[] verticies = new float[]{
-v, v, v,-v, v,-v, v, v,-v, v, v, v, //oben
-v,-v, v,-v,-v,-v, v,-v,-v, v,-v, v, //unten
-v, v, v,-v, v,-v,-v,-v,-v,-v,-v, v, //links
v, v, v, v, v,-v, v,-v,-v, v,-v, v, //rechts
-v, v,-v, v, v,-v, v,-v,-v,-v,-v,-v, //hinten
-v, v, v, v, v, v, v,-v, v,-v,-v, v}; //vorne

float[] normals = new float[] {
0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, //oben
0,-1, 0, 0,-1, 0, 0,-1, 0, 0,-1, 0, //unten
-1, 0, 0,-1, 0, 0,-1, 0, 0,-1, 0, 0, //links
1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, //rechts
0, 0,-1, 0, 0,-1, 0, 0,-1, 0, 0,-1, //hinten
0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1};//vorne


_vertexBuffer = GLBuffer.createFloatBuffer(verticies);
_normalBuffer = GLBuffer.createFloatBuffer(normals);


gl.glVertexPointer(3, GL10.GL_FLOAT, 0,_vertexBuffer);
gl.glNormalPointer(GL10.GL_FLOAT, 0, _normalBuffer);

gl.glEnableClientState (GL10.GL_VERTEX_ARRAY);
gl.glEnableClientState (GL10.GL_NORMAL_ARRAY);

gl.glDrawArrays(GL10.GL_TRIANGLE_FAN, 0, 4);
gl.glDrawArrays(GL10.GL_TRIANGLE_FAN, 4, 4);
gl.glDrawArrays(GL10.GL_TRIANGLE_FAN, 8, 4);
gl.glDrawArrays(GL10.GL_TRIANGLE_FAN,12, 4);
gl.glDrawArrays(GL10.GL_TRIANGLE_FAN,16, 4);
gl.glDrawArrays(GL10.GL_TRIANGLE_FAN,20, 4);

gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
gl.glDisableClientState(GL10.GL_NORMAL_ARRAY);


denke nicht dass hier irgendwo ein fehler sein sollte. es kommt mir so vor, als ob die polygonen nicht vollständig gerendert werden.
 
@BobBob: Auf eine dumme Frage gibts halt eine dumme Gegenfrage. Auf deinen Bildern kann man herzlich wenig erkennen.
 
@IceMatrix Also wenn man keine Ahnung hat, dann sollte man auch nicht antworten. Ich bitte dich hier nichts mehr zu schreiben, um das ganze hier zu vermüllen.
 
Was hast du denn für Hilfe erwartet bei den Bildern. Soll man da sehen "Ah, ein Vorzeichenfehler in Zeile 17"?
Und wenn dir dann jemand sagt, dass man so nicht helfen kann ist das etwas wofür man sich bedankt - da man ja scheinbar nicht drauf gekommen ist, dass Quellcode notwendig ist - anstatt unfreundlich zu werden...
Aber so hab ich auch keine Lust den Kram anzugucken :X
Vor allem ohne
Code:
 tags, ohne Kommentare und mit dem Hinweis, dass an der geposteten Stelle der Fehler eh nicht erwartet wird... wieso postest du denn nicht die Stelle wo du den Fehler vermutest?^^
 
Zuletzt bearbeitet:
@kuddlmuddl
genau das ist die sache dass ich den Fehler nicht im Code erwarte. Habe das gepostet weil du es unbediengt haben wolltest.
Und die Bilder habe ich gepostet, damit man es besser sehen kann was ich meine. Und das ist genau die Stelle wo ich meine dass der Fehle hier auftritt.
Wie gesagt Code ist sauber. Und das Bild selbst wird mit Artefakten gerendert.
 
Kannst du mal den kompletten Code hochladen am besten in der Ordnerstruktur des Android-SDKs - dann schau ich mal drüber ob ich was finde.
 
Zurück
Oben