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.