2011-12-09 14 views
1

私はAndroidを使っていましたが、OpenGL ESに基づいてAndroidライブラリを使用した後、私は急落して自分で学びました。それはかなり急な学習曲線のようですが、私は約束し、常に喜んで学びます。しかし、私が見つけることができる初心者のチュートリアルを読んだら、私は最初のアプリケーションをまとめて苦労しています。私は単に画面上に三角形を表示しようとしていますが、これまではすべてが黒い画面になっていました。AndroidでOpenGL ES 1.xを使い始める - 基本的なプリミティブ

私がどこに間違っているのかを指摘できれば(そして可能ならば理由を説明してください)、私は本当に感謝しています!ありがとう! (以下はレンダラー、私はアクティビティも含めて何のポイントも見ませんでした)。

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

関連する問題