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:采用恒定着色,使用图元中某个顶点的颜色来渲染整个图元。
