سؤال

يمكنك مزج جافا ومكالمات OpenGL الأصلية. على سبيل المثال، تحدث الإعداد في Onsurfacecreateded، ولكن وجود مكالمة OnDraw في التعليمات البرمجية الأصلية (أو حتى كليهما)؟ أواجه مشكلة في الحصول على رمز أصلية لتقديمها، ولكن لا يمكنني معرفة ما إذا كان قد يكون هذا مشكلة أو إذا قمت بإلقاء استثناءات C ++، لكنها لا فقومة ...

    private static native void drawFromJni();

public void onDrawFrame(GL10 gl) {
    try{
        drawFromJni();
       //gl.glDrawArrays... also
    }
    catch (Exception ex){
        ex.printStackTrace();
        Log.e("sv", ex.getMessage());
    }
} 

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

    gl.glViewport(0, 0, width, height);

    float ratio = (float) width / height;
    gl.glMatrixMode(GL10.GL_PROJECTION);
    gl.glLoadIdentity();
    gl.glFrustumf(-ratio, ratio, -1, 1, 1, 10);
}

public void onSurfaceCreated(GL10 gl, EGLConfig config) {
    gl.glDisable(GL10.GL_DITHER);
     gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_FASTEST);
     gl.glClearColor(0,0,0,0);
     gl.glEnable(GL10.GL_CULL_FACE);
     gl.glShadeModel(GL10.GL_SMOOTH);
     gl.glEnable(GL10.GL_DEPTH_TEST);
}
هل كانت مفيدة؟

المحلول

الإجابة السريعة هي نعم، إنها تعمل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top