天天看点

OpenGL编程-1

Opengl入门基础笔记

OpenGL实用工具库(OpenGL Utility Toolkit Library, GLUT)

提供所有窗口系统的共同功能

打开窗口

从鼠标和键盘获取输入

弹出菜单

事件驱动

代码可以在平台间移植,但是GLUT缺乏在特定平台上优秀工具包所具有的功能

滚动条

绝大多数常数采用#define在头文件gl.h, glu.h和glut.h中定义

注意#include <glut.h>会自动包含其它两个头文件

如:

glBegin(GL_POLYGON);

glClear(GL_COLOR_BUFFER_BIT);

在头文件中也定义了OpenGL数据类型: GLfloat, Gldouble,….

基本几何形状

线段

多边形

*属性

*变换

视图Viewing

建模Modeling

*控制(GLUT)

*输入(GLUT)

*查询Query

glVertex3f(x,y,z) glVertex3fv(p)

gl表示属于GL库 3指参数个数 f指参数的类型 P为指向float的指针

'注意每部分的大小写'

OpenGL不是面向对象的,因此逻辑上的一个函数却对应着多个OpenGL函数:

glVertex3f

glVertex2i

glVertex3dv

内在存贮模式是相同的

在C++中很容易创建重载函数,但效率却成为主要问题

·每个GLUT程序都必须有一个显示回调函数

·只要OpenGL确定显示内容要被刷新时,显示回调函数就会被调用。例如,当窗口被打开的时候

·main函数以程序进入事件循环后为结束

·The main function ends with the program entering an event loop

·glutInit使得应用程序可获取命令行参数并初始化系统

·glutInitDisplayMode设置窗口的属性

RGB颜色

单缓冲区

·属性按照逻辑组合在一起

·glutWindowSize 以像素为单位定义窗口的尺寸

·glutWindowPosition 定义窗口左上角在显示器上的位置

·glutCreateWindow创建窗口,标题来自于参数值

·glutDisplayFunc定义显示回调函数

·glutMainLoop进入无穷的事件循环

简单多边形:边除顶点外不相交

凸多边形:对于多边形中任意两点,连接这两点的线段完全在多边形内

平面多边形:所有顶点在同一平面上

·颜色(点、线、多边形)

·点的大小

·线段的宽度与实虚模式

·多边形

前后面

填充模式:颜色或模式

显示为实心多边形或者只显示边界

·颜色的每个分量在帧缓冲区中是分开存贮的

·在缓冲区中通常每个分量占用8位字节

·注意在函数glColor3f中颜色值的变化范围是从0.0(无)到1.0(全部), 而在glColor3ub中颜色值的变化范围是从0到255

由一组RGB值构成一张表,“颜色”是表中项的索引

需要更少的内存

索引通常只有8位

现在重要性下降

由glColor*设置的颜色成为状态的一部分,后续构造过程将使用该颜色,直至它被修改为止

颜色与其它属性不是对象的一部分,但是在渲染对象时要把这些属性赋给对象

可以按下述过程创建具有不同颜色的顶点

glColor

glVertex

OpenGL根据多边形顶点颜色插值出内部颜色

glShadeModel(GL_SMOOTH)

GL_SMOOTH: 采用光滑着色,独立的处理图元中各个顶点的颜色。对于线段图元,线段上各点的颜色将根据两个顶点的颜色通过插值得到。对于多边形图元,多边形内部区域的颜色将根据所有顶点的颜色插值得到。即有过渡色效果

第一个顶点的颜色确定填充颜色

glShadeModel(GL_FLAT)

GL_FLAT:采用恒定着色,使用图元中某个顶点的颜色来渲染整个图元。

OpenGL编程-1

继续阅读