GLUT_DOUBLE和GLUT_SINGLE 用例

说明

GLUT_SINGLE 0x0000 指定单缓存窗口

GLUT_DOUBLE 0x0002 指定双缓存窗口

原理

GLUT_SINGLE单缓冲,屏幕显示调用glFlush(),将图像在当前显示缓存中直接渲染,会有图形跳动(闪烁)问题

GLUT_DOUBLE双缓冲,屏幕显示调用glutSwapBuffers(),将图像先绘制在另外的缓存中,渲染完毕之后,将其整个缓存贴到当前的窗口,能消除闪烁,一般动画要用双缓冲.

GLUT_SINGLE例子

#include <gl/glut.h>

#include <Windows.h>

void myDisplay(void)

{

glClearColor(1.0f, 1.0f, 1.0f, 0.0f);

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glPointSize(20);

glBegin(GL_POINTS);

glColor3f(0.0, 1.0, 0.0);

glVertex2f(0.0, 0.0);

glEnd();

glFlush();

}

int main(int argc, char* argv[])

{

glutInit(&argc, argv);

glutInitDisplayMode(GLUT_RGBA | GLUT_SINGLE);

glutInitWindowPosition(200, 200);

glutInitWindowSize(400, 400);

glutCreateWindow("OpenGL 窗口1");

glutDisplayFunc(&myDisplay);

glutMainLoop();

return 0;

}

GLUT_DOUBLE例子

#include <gl/glut.h>

#include <Windows.h>

void myDisplay(void)

{

glClearColor(1.0f, 1.0f, 1.0f, 0.0f);

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glPointSize(20);

glBegin(GL_POINTS);

glColor3f(0.0, 1.0, 0.0);

glVertex2f(0.0, 0.0);

glEnd();

glutSwapBuffers();

}

int main(int argc, char* argv[])

{

glutInit(&argc, argv);

glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE);

glutInitWindowPosition(200, 200);

glutInitWindowSize(400, 400);

glutCreateWindow("OpenGL 窗口1");

glutDisplayFunc(&myDisplay);

glutMainLoop();

return 0;

}

时间: 2024-08-28 14:42:45

GLUT_DOUBLE和GLUT_SINGLE 用例的相关文章

最简单的视音频播放示例4:OpenGL播放RGB/YUV

本文记录OpenGL播放视频的技术.OpenGL是一个和Direct3D同一层面的技术.相比于Direct3D,OpenGL具有跨平台的优势.尽管在游戏领域,DirectX的影响力已渐渐超越OpenGL并被大多数PC游戏开发商所采用,但在专业高端绘图领域,OpenGL因为色彩准确,仍然是不能被取代的主角. OpenGL简介 从网上搜集了一些有关OpenGL简介方面的知识,在这里列出来.开放图形库(英语:Open Graphics Library,缩写为OpenGL)是个定义了一个跨编程语言.跨平

鼠标交互 用例

说明 鼠标按下的时候,在屏幕上打点,由于采用的是默认的坐标系,点并不在点击的地方,这个会在稍后的用例中描述 代码 #include <gl/glut.h> #include <Windows.h> void myDisplay(void) { glClearColor(1.0f, 1.0f, 1.0f, 0.0f); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glFlush(); } void myMouse(int b

【OpenGL 学习笔记01】HelloWorld演示样例

<<OpenGL Programming Guide>>这本书是看了忘,忘了又看,赶脚还是把笔记做一做心里比較踏实,哈哈. 我的主题是,好记性不如烂笔头. ================================================================ 1. 下载glut库 glut库地址为:www.opengl.org/resources/libraries/glut/glutdlls37beta.zip glut全称为:OpenGL Utilit

图解VC++ opengl环境配置和几个入门样例

VC6下载 http://blog.csdn.net/bcbobo21cn/article/details/44200205 demoproject和glut库下载 http://pan.baidu.com/s/1pLSpKiZ 一 环境配置 參阅 http://blog.itpub.net/17267437/viewspace-545635/ 解压glut库 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize

Python Socket 编程——聊天室演示样例程序

上一篇 我们学习了简单的 Python TCP Socket 编程,通过分别写服务端和client的代码了解主要的 Python Socket 编程模型.本文再通过一个样例来加强一下对 Socket 编程的理解. 聊天室程序需求 我们要实现的是简单的聊天室的样例,就是同意多个人同一时候一起聊天.每一个人发送的消息全部人都能接收到,类似于 QQ 群的功能,而不是点对点的 QQ 好友之间的聊天.例如以下图: 图来自:http://www.ibm.com/developerworks/linux/tu

python+selenium+unitest用例失败重运行

经过多次研读和调试unittest代码,后来发现一个也可以重运行setUp()和dearDown()的解决办法,那就是修改源码,我们重新建一个模块套件类来覆盖原来的TestSuite类 实例代码: [python] view plain copy class Suit(unittest.TestSuite): def run(self, result, debug=False): failcount = 1#失败总运行次数 class_num = 1 topLevel = False if ge

多线程下的单例-double check

话不多说直接上代码: public sealed class Singleton { private static Singleton _instance = null; // Creates an syn object. private static readonly object SynObject = new object(); Singleton() { } public static Singleton Instance { get { // Double-Checked Lockin

ADF Faces导出Excel文件【附样例工程】

本文提供一个基于ADF Face组件开发样例工程,工程的实现过程分为3个部分以应对Excel导出开发中常见的处理. 1.空模版文件下载:将Excel文件视为普通文件提供下载操作. 2.数据文件输出,将数据内容输出为Excel文件,目标文件尽在服务端内存中存在,这种方式需要对Excel文件的内容处理,需要引入响应的类库. 3.模版文件填充数据后下载,基于服务端的物理文件为模板,将业务数据填入约定位置后提供下载,在实现方面需要为工作簿对象指定源文件输入流,并完成后续内容处理. 实现的基本思路,由AD

二维图像到二维屏幕的投影 用例

说明 在默认的2D渲染中,渲染的X,Y轴的范围都是从[-1, 1],屏幕的中心点(0,0),所以鼠标点击的坐标,必须转换成世界地理坐标系,在2D环境下,默认Z轴坐标为0.0 假设屏幕宽800,高4800 屏幕坐标 地理坐标 左上角 0,0 -1,1 左下角  0,480 -1,-1 右上角  800,0           1,1 右下角  800,480         1,-1 现在通过gluOrtho2D函数将二维图像到二维屏幕上的投影,将坐标移动到左下角,方向刚好和屏幕坐标的Y轴相反 代