0

我在使用 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();
    }
4

1 回答 1

0

请看这里,它很好地解释了立即模式和保留模式 API之间的区别。我在OpenGL wiki中没有找到像样的东西(根本没有提到任何地方的即时性)。Kurt Akelay 和 Pat Hanrahan有一些很好的幻灯片;搜索“界面选择”。这些是值得信赖的,相信我;)

于 2012-04-07T08:41:33.853 回答