Using OpenGL to replace Canvas - Android

后端 未结 1 1703
醉酒成梦
醉酒成梦 2021-01-02 12:16

I am attempting to replace the Canvas-based rendering system that I already have with the faster opengl-es surface, however, I can\'t seem to get an openGL renderer to confo

相关标签:
1条回答
  • 2021-01-02 12:53

    Please note that in openGL that Y co-ordinate is inverted. Otherwise all is the same.
    As for the correct flags, I recommend you check out the open source android game replica island: http://code.google.com/p/replicaisland/

    Here's what I use in my own code:

    public void onSurfaceChanged(GL10 gl, int width, int height) 
    {
        mViewWidth = width;
        mViewHeight = height;
    
        gl.glViewport(0, 0, mViewWidth,  mViewHeight);
        gl.glLoadIdentity();
        GLU.gluOrtho2D(gl, 0, mViewWidth, mViewHeight, 0);
    }
    
    public void onSurfaceCreated(GL10 gl, EGLConfig config) 
    {
        gl.glClearColor(0.5f, 0.5f, 0.5f, 1);
        gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_FASTEST);
        gl.glShadeModel(GL10.GL_FLAT);
        gl.glDisable(GL10.GL_DEPTH_TEST);
        gl.glEnable(GL10.GL_BLEND);
        gl.glBlendFunc(GL10.GL_ONE, GL10.GL_ONE_MINUS_SRC_ALPHA); 
    
        gl.glViewport(0, 0, mViewWidth,  mViewHeight);
        gl.glMatrixMode(GL10.GL_PROJECTION);
        gl.glLoadIdentity();
        gl.glEnable(GL10.GL_BLEND);
        gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
        gl.glShadeModel(GL10.GL_FLAT);
        gl.glEnable(GL10.GL_TEXTURE_2D);
    
        GLU.gluOrtho2D(gl, 0, mViewWidth, mViewHeight, 0);
    }
    

    Where mViewWidth & mViewHeight are the size of the display.

    0 讨论(0)
提交回复
热议问题