我是靠谱客的博主 微笑黄豆,最近开发中收集的这篇文章主要介绍OpenGL:正方形旋转小例子,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

#include<GL/glut.h>
#include<stdio.h>
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glColor4f(0.2f, 0.4f, 0.6f, 0.0f);
glRectf(-0.5f, -0.5f, 0.5f, 0.5f);
//glFlush();
glutSwapBuffers();
}
static float angle = 0.0;
void myIdle(void)
{
//angle = angle + 0.1;//旋转的角度不断增加,旋转越来越快
angle = 0.5;//固定角度,旋转是匀速的
if (angle > 360) angle = 0.0;
glRotatef(angle, 0, 0, 1);
glutPostRedisplay();
}
int main(int argc, char* argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);
glutInitWindowPosition(100, 100);
glutInitWindowSize(400, 400);
glutCreateWindow("hello world");
glutDisplayFunc(display);
glutIdleFunc(&myIdle);//在程序空闲的时候就会被调用
glutMainLoop();
return 0;
}

glFlush是强制刷新,要知道OPENGL是使用一条渲染管线线性处理命令的,一般情况下,我们提交给OPENGL的指令并不是马上送到驱动程序里执行的,而是放到一个缓冲区里面,等这个缓冲区满了再一次过发到驱动程序里执行;很多时候只有几条指令是填充不满那个缓冲区的,这就是说这些指令根本没有被发送到驱动里,所以我们要调用glFlush来强制把这些指令送到驱动里进行处理。

glutSwapBuffers是交换缓冲区,当程序使用的是双缓冲技术时使用;所有的绘制都是绘制到一个后台的缓冲区里面的,如果不交换缓冲区,就看不到绘制的东西了

双缓存技术使用两个颜色缓存――前台缓存和后台缓存,前台缓存用于刷新显示屏,后台缓存用于应用程序的绘制。交换前台缓存和后台缓存的函数是void glutSwapBuffers() ,用它取代显示回调函数中的glFlush()即可。要用双缓存技术,需要在初始化时就指定,把原来的

glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB)

改为glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB)。

最后

以上就是微笑黄豆为你收集整理的OpenGL:正方形旋转小例子的全部内容,希望文章能够帮你解决OpenGL:正方形旋转小例子所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(64)

评论列表共有 0 条评论

立即
投稿
返回
顶部