6

レンダラーオブジェクトがまったく呼び出されないように見えるという問題がありますonDrawFrame。デバッガーが関数内のブレークポイントにヒットすることはありません。したがって、私の正方形は描画されていません。これがコードです。他に何か必要な場合はお知らせください。

public class renderer implements GLSurfaceView.Renderer {

Square square;

public void onDrawFrame(GL10 unused) {
    GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);
    square.Draw();
}

public void onSurfaceChanged(GL10 gl, int width, int height) {
    GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);
}

public void onSurfaceCreated(GL10 unused, int width, int height) {
    GLES20.glViewport(0, 0, width, height);

}

public void onSurfaceCreated(GL10 gl, EGLConfig config) {
    square = new Square(5, 5);

}

主な活動は次のとおりです。

public class gameActivity extends Activity {
/** Called when the activity is first created. */

private GLSurfaceView mGLView;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    staticHolder.context = getApplicationContext();
    mGLView = new GLSurface(this);
    setContentView(mGLView);
}
@Override
protected void onPause() {
    super.onPause();
    // The following call pauses the rendering thread.
    // If your OpenGL application is memory intensive,
    // you should consider de-allocating objects that
    // consume significant memory here.
    mGLView.onPause();
}

@Override
protected void onResume() {
    mGLView.onResume();
}


class GLSurface extends GLSurfaceView
{
    renderer r = new renderer();
    public GLSurface(Context context)

    {
        super(context);

        setEGLContextClientVersion(2);
        setRenderer(r);
        setRenderMode(GLSurfaceView.RENDERMODE_CONTINUOUSLY);
    }
}

}

現在、画面は真っ黒です。openGLが正しくレンダリングされない理由について何か考えはありますか?

4

1 に答える 1

3

さて、これは本当にばかげていましたが、そもそも問題はありませんでした。問題は、Eclipse / JavaがC#や他の言語のようにあいまいさを気にしないことです(間違っている場合は訂正してください)。問題は、同じクラスを別の場所に複製し、一方を更新し、もう一方を更新しなかったことです。最終結果は、それが最初に見つけたものをつかんでいたということでした。

教訓を学びました。コンパイラー/パーサーは教えてくれないので、あいまいさを自分で探してください。

于 2012-07-01T19:51:17.503 に答える