2

重複の可能性:
GL11 (Android) の getFloatv 関数の問題

glGetFloatv」が描画メソッドで呼び出されると、ModelMatrix にゼロが設定されていることがわかりましたが、オブジェクトが Z 軸と Y 軸で 1 単位変換されるため、ModelMatrix が埋められると予想していました。その理由を探していると、LogCat が「libEGL が実装されていない OpenGL ES API を呼び出しました」という次のメッセージをスローしていることがわかりました。

正しい OpenGL バージョンを実行していないと推測できますが、強制的に OpenGL ES 2 を使用しても問題は引き続き発生します。

私のソースコードは以下の通りです:

レンダリング クラス

@Override
public void onDrawFrame(GL10 gl) {
    gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
    gl.glLoadIdentity();
        objectToDraw.Draw(gl);
}

@Override
public void onSurfaceChanged(GL10 gl, int width, int height) {

    gl.glViewport(0, 0, width, height);     
    gl.glMatrixMode(GL10.GL_PROJECTION);    
    gl.glLoadIdentity();
    GLU.gluPerspective(gl, 45.0f, (float)width / (float)height, 0.1f, 100.0f);
    gl.glMatrixMode(GL10.GL_MODELVIEW);
    gl.glLoadIdentity();
}

@Override
public void onSurfaceCreated(GL10 gl, EGLConfig egl) {

    gl.glEnable(GL10.GL_TEXTURE_2D);
    gl.glShadeModel(GL10.GL_SMOOTH);
    gl.glClearDepthf(1.0f);
    gl.glEnable(GL10.GL_DEPTH_TEST);
    gl.glDepthFunc(GL10.GL_LEQUAL); 
    gl.glEnable(GL10.GL_BLEND);
    gl.glBlendFunc(GL10.GL_ONE, GL10.GL_ONE_MINUS_SRC_ALPHA);
    gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_NICEST);
}

オブジェクトの描画方法。

public void Draw(GL10 gl){
        gl11 = (GL11) gl;           
        gl11.glGetFloatv(GL11.GL_MODELVIEW_MATRIX, _matrix,0);
            super.Draw();
        gl.glPopMatrix();
}

最後に、私は Eclipse エミュレーターを使用していません。HTC Wild Fire デバイスでアプリケーションをデバッグしています (エミュレーターは遅すぎます)。

4

0 に答える 0