Проблемы с MatrixGrabber: java.lang.ClassCastException: com.google.android.gles_jni.GLImpl - PullRequest
1 голос
/ 17 февраля 2012

У меня есть класс GLSurfaceView, который должен показывать квадрат с текстурой.Я пытаюсь подогнать экран под размеры текстуры / многоугольника, затем мне нужно использовать проекции.

Я использую 3 класса для совместимости с Android 1.5:

MatrixGrabber.javaMatrixStack.java MatrixTrackingGL.java

Это часть кода, которая выдает ошибку:

private MatrixGrabber mg = new MatrixGrabber(); //create the matrix grabber object in your initialization code   
.
.
.
DisplayMetrics dm = new DisplayMetrics();
        ((Activity)context).getWindowManager().getDefaultDisplay().getMetrics(dm);      
        screenW=dm.widthPixels;
        screenH=dm.heightPixels;

        modelMatrix=mg.mModelView;
        projMatrix=mg.mProjection;
        mView[0] = 0;
        mView[1] = 0;
        mView[2] = screenW; //width
        mView[3] = screenH; //height    
.
.
.
public void onDrawFrame(GL10 gl) {      
        //Clear Screen And Depth Buffer
        gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);    
        gl.glLoadIdentity();                    //Reset The Current Modelview Matrix

        mg.getCurrentProjection(gl);
        mg.getCurrentModelView(gl); 
.
.
.

И это ошибка:

    02-17 09:13:59.952: WARN/dalvikvm(11405): threadid=8: thread exiting with uncaught exception (group=0x4001d7e0)
02-17 09:13:59.960: ERROR/AndroidRuntime(11405): FATAL EXCEPTION: GLThread 9
02-17 09:13:59.960: ERROR/AndroidRuntime(11405): java.lang.ClassCastException: com.google.android.gles_jni.GLImpl
02-17 09:13:59.960: ERROR/AndroidRuntime(11405):     at com.DemoMagazine.MatrixGrabber.getMatrix(MatrixGrabber.java:56)
02-17 09:13:59.960: ERROR/AndroidRuntime(11405):     at com.DemoMagazine.MatrixGrabber.getCurrentProjection(MatrixGrabber.java:52)
02-17 09:13:59.960: ERROR/AndroidRuntime(11405):     at com.DemoMagazine.SquareGLSurfaceView.onDrawFrame(SquareGLSurfaceView.java:112)
02-17 09:13:59.960: ERROR/AndroidRuntime(11405):     at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1332)
02-17 09:13:59.960: ERROR/AndroidRuntime(11405):     at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1116)

1 Ответ

0 голосов
/ 04 марта 2012

У меня также были некоторые проблемы при попытке получить матрицу, но они, кажется, исправлены, установив матричный режим в тот, который я собираюсь получить, в вашем случае:

public void onDrawFrame(GL10 gl) {      
    //Clear Screen And Depth Buffer
    gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
    gl.glMatrixMode(GL10.GL_MODELVIEW);
    gl.glLoadIdentity();                    //Reset The Current Modelview Matrix

    mg.getCurrentModelView(gl);
    gl.glMatrixMode(GL10.GL_PROJECTION);
    mg.getCurrentProjection(gl);

и помните, чтотеперь в режиме проекции, если вам нужно, вы можете вернуться к просмотру модели.Это сработало для меня.

С уважением!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...