2011-12-09 29 views
1

在使用基於OpenGL ES的Android庫後,我已經在Android上玩了一段時間了,我決定自己試試並學習它。這似乎是一個相當陡峭的學習曲線,但我承諾並始終願意學習。然而,在閱讀了我能找到的任何初學者教程之後,我正努力將我的第一個應用程序串起來。我只是試圖在屏幕上顯示一個三角形,但到目前爲止,我最終都是黑屏。開始使用Android上的OpenGL ES 1.x - 基本原語

如果任何人能夠指出我要去哪裏錯(如果可能的話解釋爲什麼),我會非常感激!謝謝! (下面是渲染器,我也沒有看到包括Activity在內)。

public class OpenGLRenderer implements Renderer { 

private OpenGLActivity mContext; 

public OpenGLRenderer(OpenGLActivity pContext) { 
    mContext = pContext; 
} 

@Override 
public void onSurfaceCreated(GL10 gl, EGLConfig config) { 
    gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_FASTEST); 

    gl.glClearColor(0.0f, 0.0f, 0.0f, 1f); 
    gl.glShadeModel(GL10.GL_FLAT); 

    gl.glDisable(GL10.GL_DEPTH_TEST); 
    gl.glDisable(GL10.GL_DITHER); 
    gl.glDisable(GL10.GL_LIGHTING); 
    gl.glDisable(GL10.GL_MULTISAMPLE); 

    gl.glEnable(GL10.GL_TEXTURE_2D); 
    gl.glEnable(GL10.GL_BLEND); 
    gl.glEnable(GL10.GL_TEXTURE_COORD_ARRAY); 
    gl.glEnable(GL10.GL_VERTEX_ARRAY); 
    gl.glEnable(GL10.GL_CULL_FACE); 

    gl.glFrontFace(GL10.GL_CCW); 
    gl.glCullFace(GL10.GL_BACK);  

    gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA); 

    gl.glViewport(0, 0, 480, 800); 
    gl.glMatrixMode(GL10.GL_PROJECTION); 
    gl.glLoadIdentity(); 
    gl.glOrthof(0.0f, 1.0f, 0.0f, 1.0f, -1.0f, 1.0f); 
} 

@Override 
public void onDrawFrame(GL10 gl) { 
    gl.glClear(GL10.GL_COLOR_BUFFER_BIT); 
    gl.glLoadIdentity(); 

    gl.glDisable(GL10.GL_TEXTURE_2D); 
    gl.glColor4f(0f, 1f, 0f, 1f); 

    float[] vertices = new float[ ]{1,0, 0,1, -1,0}; 
    FloatBuffer buffer = ByteBuffer.allocateDirect(24).order(ByteOrder.nativeOrder()).asFloatBuffer(); 

    buffer.put(vertices); 

    gl.glEnableClientState(GL10.GL_VERTEX_ARRAY); 

    gl.glVertexPointer(2, GL10.GL_FLOAT, 0, buffer); 

    gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 3); 

    gl.glDisableClientState(GL10.GL_VERTEX_ARRAY); 
} 

@Override 
public void onSurfaceChanged(GL10 gl, int width, int height) { 
    gl.glViewport(0, 0, 480, 800); 
    gl.glLoadIdentity(); 
} 
} 

回答

1

這是很多代碼,只是顯示一個三角形,可能從某處複製。您應該嘗試在onSurfaceCreated方法中刪除行,並查看是否有更改。你也應該在這裏發佈你的活動。

下面是呈現一個三角形

http://blog.jayway.com/2009/12/03/opengl-es-tutorial-for-android-part-i/

http://code.google.com/p/android-gamedev/source/browse/trunk/src/com/badlogic/gamedev/samples/TriangleSample.java

的例子,因爲你學習OpenGL的你應該有一個看看Jayway教程。他們幫助我很多

+0

非常感謝,我不是簡單地複製和粘貼。我想通過添加額外的代碼,以後會有所幫助,但是您的權利我應該堅持最低限度,而不是試圖變得聰明。再次感謝,我會讀。 – AaronDS