OpenGl ES 2D Android重绘

时间:2012-04-06 04:59:27

标签: java android opengl-es

我在使用OpenGLES的前10分钟内发现了一些问题,实际上函数调用大多是相同的,但是你设置方法的方式完全不同。

我理解在OpenGL中设置多边形动画的基础知识。更改模型矩阵然后重新绘制场景并使用双缓冲来减少在快速移动物体或快速更新事物时看到的滞后的想法。

所以这是我的问题。我将如何做到这一点。在C或C ++中的OpenGl中,我可以拥有自己的方法来调用将重新绘制场景的display()函数。

我环顾四周,不得不重新学习如何绘制一个简单的多边形。我认为它完全不同。我在这里看了一下,我已经找到了一些教程,但似乎没有什么能真正推动变革背后的方法论。我有兴趣了解它与复制。

由于

新材料:

这是我想在android中实现的。这段代码在C中。从我的阅读中我理解OpenGL的方式已被弃用,但我觉得我仍然应该能够实现同样的目标。

此代码反映您有一个等待按钮被按下的监听器,一旦它被执行相关代码并重新绘制显示。这是我在OpenGL ES中的不同理解。

    void main(int argc, char** argv)
    {

         /* Standard GLUT initialization */

        glutInit(&argc,argv);

        /* default, not needed */
        glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);    

        glutInitWindowSize(500,500); /* 500 x 500 pixel window */

        /* place window top left on display */
        glutInitWindowPosition(0,0);    

        glutCreateWindow("COMP-5/6400 Assignment 2"); /* window title */

        /* display callback invoked when window opened */
        glutDisplayFunc(display); 
        glutSpecialFunc (processSpecialKeys);
        myinit(); /* set attributes */

        glutMainLoop(); /* enter event loop */
    }

    void processSpecialKeys(int key, int x, int y)
    {
         switch(key){
             case GLUT_KEY_UP:
                moveUp();
            break;
            case GLUT_KEY_DOWN:
                    moveDown();
            break;
            case GLUT_KEY_LEFT:
                moveLeft();
            break;
            case GLUT_KEY_RIGHT:
                moveRight();
            break;
        }
    }

    void moveUp(){
    personX= (5.0*cosf(personRota))+personX;
    personY= (5.0*sinf(personRota))+personY;
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    display();
    }

1 个答案:

答案 0 :(得分:0)

请查看here,它很好地解释了立即模式与保留的模式API之间的区别。我在OpenGL wiki找不到合适的东西(根本没有提及立即)。 Kurt Akelay and Pat Hanrahan有一些好的幻灯片;搜索“界面选择”。这些是可信的,只是信任我;)