资源下载地址:https://download.csdn.net/download/sheziqiong/85628187

实验目的和要求

在三维观察实验的基础上,通过实现下述实验内容,掌握OpenGL中显示列表的作用和使用方法。

实验内容和原理

使用Visual Studio C++编译已有项目工程,

修改代码,通过键盘按键,控制兔子的数量(1至16个)以及整个场景的渲染模式,生成以下图形:

用按键I、K添加兔子数量增减(所有兔子均摆放着在桌面上,兔子间不要有交叉,桌面不够大可自行调整),按键L来切换显示列表和非显示列表绘制方式。WASDZC控制上下左右前后移动,空格键控制整体旋转。

通过动画以及对FPS的理解和分析显示列表对程序绘制性能的影响。

主要仪器设备

Visual Studio C++

glut.zip

Ex4-vs2010 工程

操作方法和实验步骤

做实验前首先先学习一下什么是OpenGL列表:OpenGL在即时模式(Immediate Mode)下绘图时,程序中每条语句产生的图形对象被直接送进绘图流水线,在显示终端立即绘制出来。当需要在程序中多次绘制同一个复杂的图像对象时,这种即时模式会消耗大量的系统资源,降低程序的运行效率,为此,OpenGL提供了一种更有效组织OpenGL语句的形式——显示列表。

那么在本实验中,列表对象共有两个:桌子列表和兔子列表。仿照桌子列表,在全局变量里定义兔子变量:

接下来,在GenTableList函数中修改,添加兔子列表:

在Draw_Table_List函数中添加画兔子的部分,但是考虑到画兔子的数量取决于你的按键,数量会随着按键变化,因此把数量设置成了全局变量 int num = 1;

测试运行!

发现很鬼畜,于是调整兔子的位置与桌面的大小,这一步是用目测法,具体代码就不列出来了,只是改了参数。直到调整到显示正常:

实验数据记录和处理

本次实验的一个重点在于分析FPS值。我们可以明显的感觉到,随着兔子数量增加,旋转的速度明显变慢,而列表显示又比普通显示的旋转速度要快。这其中的原因分析就用到了FPS。

FPS的含义是每秒传输帧数,它的大小反映了绘制的流畅性。首先先查阅资料与GLUT库帮助文档,对getFPS函数做注释与分析:

实验结果与分析

通过实验,我们发现在使用显示列表的情况下,每秒刷新的帧率普遍要更高。

显示列表是一种快速的缓存,当我们须要重复地绘制同一物体时,能够将其存入显示列表,并在绘制时调用显示列表,这样就避免了由于重复调用而导致的重复计算。

显示列表是一组存储在一起的OpenGL函数,可以在以后执行。调用一个显示列表时,它所存储的函数就会按照顺序执行。类似存储在服务端(GPU)的缓冲区对象,能够提高效率。在创建显示列表时,只有表达式的值存储在显示列表中,并且这个值也不会再修改。还有像有返回值的函数与依赖客户端状态的函数都不能放在显示列表中。这主要是因为这样的函数需要依赖服务端数据与状态,但显示列表是存储在服务端的。

简单来说,显示列表的优势就在于高效绘制,但是劣势也十分明显——不能即时修改,也就是无法动态绘制。

资源下载地址:https://download.csdn.net/download/sheziqiong/85628187

基于C++OpenGL实现的小桌兔子图形绘制相关推荐

  1. 基于C++OpenGL实现的小桌茶壶图形绘制

    资源下载地址:https://download.csdn.net/download/sheziqiong/85628081 实验目的和要求 在模型变换实验的基础上,通过实现下述实验内容,掌握OpenG ...

  2. 基于C++OpenGL实现的小桌子图形绘制

    资源下载地址:https://download.csdn.net/download/sheziqiong/85627947 实验目的和要求 在OpenGL编程基础上,通过实现实验内容,掌握OpenGL ...

  3. 计算机图形学——实验一 VS+OpenGL绘图环境及基本图形绘制

    实验一 VS+OpenGL绘图环境及基本图形绘制 一.实验目的 熟悉OpenGL的主要功能: 掌握OpenGL的绘图流程和原理: 掌握OpenGL核心函数的使用: 熟悉OpenGL基本图形元素的绘制函 ...

  4. 基于C++OpenGL实现的小桌茶壶纹理图形绘制

    资源下载地址:https://download.csdn.net/download/sheziqiong/85628707 资源下载地址:https://download.csdn.net/downl ...

  5. c++ 判断硬件是否支持opengl_【译】OpenGL 教程:二维图形绘制

    为了更好的排版,请到以下博客查看此教程 OpenGl 环境搭建与介绍​iamazing.cn 1. 搭建 OpenGL 环境 取决于你的编程平台,有以下教程: 基于 C++(也可以看译者自己写的教程) ...

  6. 【OpenGL ES】二维图形绘制

    目录 OpenGL ES 学习--2D 着色器语言基础知识 绘制纯色背景 JAVA版本 C++版本 绘制圆点.直线.三角形 JAVA版本 C++版本 绘制彩色三角形 JAVA版本 C++版本 绘制纯色 ...

  7. OpenGL(三)三维图形绘制

    #include "stdafx.h" #include<GL/freeglut.h> #include<GLFW/glfw3.h>// 绘图棱锥 void ...

  8. SurfaceView简单理解,Android混淆,Android openGl开发详解简单图形的绘制,

    SurfaceView允许你在非ui线程中去绘制. SurfaceView的帧率可以操作60FPS 在要求实时性比较高的游戏开发中,显然,view的ondraw是满足不了你的,这时候只能是用Surfa ...

  9. c++之openGL在VS中的配置及简单图形绘制

    VS中openGL的配置 相关资源下载: 链接:https://pan.baidu.com/s/1hRlxbckgLsNiS87k5CPvLg 提取码:tz87 以vs2010为例: 将下载的压缩包解 ...

最新文章

  1. 英伟达开源行人生成/重识别代码
  2. c# 给文件/文件夹 管理用户权限
  3. 在NSUserDefaults中存储自定义类型的数据
  4. 虚拟专题:知识图谱 | 知识图谱多跳问答推理研究进展、挑战与展望
  5. 【英语学习】【WOTD】prodigous 释义/词源/示例
  6. DHCP服务器控制企业成本
  7. 剑指offer——面试题63:二叉搜索树的第k个结点
  8. android本地图片选择(相册选取,相机拍摄)
  9. ARC 101E.Ribbons on Tree(容斥 DP 树形背包)
  10. Linux网络收发包流程
  11. oracle表数据的导出到excel文件,文件怎么导出到excel表格数据库-如何导出oracle数据库中某张表到excel...
  12. 陈强老师公开课笔记2——中介效应的原理与检验
  13. 基于PHP的校园失物招领平台(自动匹配推送)
  14. 计算机向u盘拷贝速度慢,U盘读写拷贝速度慢的解决措施
  15. 三星android获取root权限,三星S9 G9600 9.0 root教程_获取安卓9.0系统的root权限的方法...
  16. NKOI 2495 火车运输
  17. c++ 语法错误 : 缺少“;”(在“*”的前面)
  18. 北大计算机陈鹏,陈鹏-北京语言大学人事处
  19. Effective Modern C++ 条款1 理解模板类型推断
  20. postcss 插件_PostCSS深入研究:创建自己的插件

热门文章

  1. 锐捷(九)锐捷设备恢复,更改密码
  2. [微信小程序 开发] 云数据库
  3. 虚拟计算机 VMWare安装使用指南
  4. android5硬件要求,战地5配置高不高_战地5游戏配置要求
  5. 《嵌入式 – GD32开发实战指南》第21章 I2C
  6. vxe-grid尾行
  7. excel怎么启用宏_#数据同步#Excel + mysql 制作自动化报表
  8. cocos2dx掼蛋_cocos2dx游戏开发——微信打飞机学习笔记(九)——BulletLayer的搭建...
  9. MAYA渲染 mantel ray材质球 mia_material_x
  10. Flash Builder快捷键