glFlush 和glSwapBuffer

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

2 glutSwapBuffers其实就是交换缓冲区啦,估计是你的程序使用的是双缓冲技术吧;用了这种技术的话,你所有的绘制都是绘制到一个后台的缓冲区里面的,如果不交换缓冲区,就看不到绘制的东西了

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
计算机图形学实验报告 21 计算机图形学实验报告全文共48页,当前为第1页。计算机图形学实验报告全文共48页,当前为第1页。 计算机图形学实验报告全文共48页,当前为第1页。 计算机图形学实验报告全文共48页,当前为第1页。 计算机图形学实验报告 姓名: 学号: 班 级: 专业: 计算机科学与技术 完成日期: 2017.1.3 计算机图形学实验报告全文共48页,当前为第2页。计算机图形学实验报告全文共48页,当前为第2页。 计算机图形学实验报告全文共48页,当前为第2页。 计算机图形学实验报告全文共48页,当前为第2页。 目录 实验一 OpenGL图形编程 3 1. 实验目的 3 2. 实验内容 3 3. 实验代码与实验结果 4 (1) 画矩形 4 (2) 画点 6 (3) 画直线 7 (4) 画等边三角形 8 实验二 直线绘制实验 9 1. 实验目的和实验内容 9 2. 实验代码和实验结果 9 (1) 掌握数值微分算法编程绘制直线 9 (2) 掌握中点画线算法编程绘制直线 12 (3) 掌握Bresenham算法编程绘制直线 13 实验三 圆绘制实验 16 1. 实验目的和实验内容 16 2. 实验代码实验结果 16 (1) 实现八分法画圆程序 16 (2) 实现 Bresenham 算法绘制圆 18 (3) 实现中点Bresenham 算法绘制椭圆 22 实验四 填充算法实验 26 1. 实验目的 26 2. 实验内容 26 3. 实验代码和实验结果 27 实验五 裁剪算法实验 37 1. 实验目的和实验内容 37 2. 实验代码和实验结果 37 计算机图形学实验报告全文共48页,当前为第3页。计算机图形学实验报告全文共48页,当前为第3页。实验一 OpenGL图形编程 计算机图形学实验报告全文共48页,当前为第3页。 计算机图形学实验报告全文共48页,当前为第3页。 实验目的 点的绘制 直线的绘制 多边形面的绘制 实验内容 点的绘制 glBegin(GL_POINTS); glVertex3f(0.0f, 0.0f, 0.0f); glVertex3f(10.0f, 0.0f, 0.0f); glEnd(); 点的属性(大小) void glPointSize(GLfloat size); 直线的绘制模式 GL_LINES GL_LINE_STRIP GL_LINE_LOOP 直线的属性 线宽 void glLineWidth(GLfloat width) 计算机图形学实验报告全文共48页,当前为第4页。计算机图形学实验报告全文共48页,当前为第4页。线型 计算机图形学实验报告全文共48页,当前为第4页。 计算机图形学实验报告全文共48页,当前为第4页。 glEnable(GL_LINE_STIPPLE); glLineStipple(GLint factor,GLushort pattern); 三角形面的绘制 GL_TRIANGLES GL_TRIANGLE_STRIP GL_TRIANGLE_FAN 四边形面的绘制 GL_QUADS GL_QUADS_STRIP 多边形面的绘制(GL_POLYGON) 多边形面的绘制规则 所有多边形都必须是平面的。 多边形的边缘决不能相交,而且多边形必须是凸的。 解决:对于非凸多边形,可以把它分割成几个凸多边形(通常是三角形),再将它绘制出来。 实验代码与实验结果 画矩形 #include <gl/glut.h> void Initial(void){ glClearColor(1.0f,1.0f,1.0f,1.0f); 计算机图形学实验报告全文共48页,当前为第5页。计算机图形学实验报告全文共48页,当前为第5页。 glMatrixMode(GL_PROJECTION); 计算机图形学实验报告全文共48页,当前为第5页。 计算机图形学实验报告全文共48页,当前为第5页。 gluOrtho2D(0.0,200.0,0.0,150.0); } void Display(void){ glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0f,0.0f,0.0f); glRectf(50.0f,100.0f,150.0f,50.0f); glFlush(); } int main(int argc,char*argv[]){ glutInit(&argc,argv); glutInitDisplayMode(GLUT_SINGLE"GLUT_RGB); glutInitWindowSize(400,300); glutInitWindowPosition(100,120); glutCreateWindow("矩形"); glutDisplayFunc(

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值