OpenGL 笔记(一)输出图元 - 基本绘制方式

这一部分出自《计算机图形学》绿绿的一本、链接如下
链接:http://pan.baidu.com/s/1bpGVHKV 密码:aamh

具体形式

数值数据类型的后缀:i(整数)、s(短整数)、v(浮点数)、d(双精度浮点数);v(向量、矩阵形式)

坐标

屏幕显示窗口坐标

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(xmin, xmax, ymin, ymax);

基本图元绘制

  • GL_POINTS 单个顶点集
  • GL_LINES 多组双顶点线段
  • GL_POLYGON 单个简单填充凸多边形
  • GL_TRAINGLES 多组独立填充三角形 生成n/3个
  • GL_QUADS 多组独立填充四边形
  • GL_LINE_STRIP 不闭合折线
  • GL_LINE_LOOP 闭合折线
  • GL_TRAINGLE_STRIP 线型连续填充三角形串 生成n-2个 顶点n、n+1、n+2
  • GL_TRAINGLE_FAN 扇形连续填充三角形串 生成n-2个 顶点1、n、n+1
  • GL_QUAD_STRIP 连续填充四边形串 2n-1、2n、2n+1、2n+2

glRect* (x1, y1, x2, y2); 为矩形特意弄了个函数\还有顺逆时针概念(正反)

顶点数组

如果使用顶点数组,绘制方式仍然和之前的类似的话,效率并不能带来多大的提升。(顶多也就,代码好看了点)
需要多次调用数组的情况做出了优化。

步骤

  1. glEnableClientState(GL_VERTEX_APPAY);激活顶点数组特性
  2. 引用glVertexPointer制定顶点坐标位置和数据格式
  3. 使用子程序如glDrawElements显示场景

Enable的反义词是Disable !~

glVertexPointer(3, GL_INT, 0, pt) - 参数
- 每一个顶点描述中坐标数目
- 数据类型,GL_INT之类
- 字节位移(方便在同一个数组中存多种类型的数据)
- 顶点数组指针

glDrawElements(GL_QUADS, 24, GL_UNSIGNED_BYTE, vertIndex);
- verIndex - 顶点索引

像素阵列函数

位图函数

void WINAPI glBitmap(
GLSizei width,
GLSizei height,
GLfloat xorig,
GLfloat yorig,
GLfloat xmove,
GLfloat ymove,
const GLubyte *bitmap
);

像素图函数

glDrawPixels(width, height, dataFormat, dataType, pixMap);
glDrawBuffer(buffer);

光栅操作

glReadPixels(xmin, ymin, width, height, dataFormat, dataType, array);
glReadBuffer(buffer);

glCopyPixels(xmin, ymin, width, height, pixelValues);

将一块像素放入缓存的不同结果:
glEnable(GL_COLOR_LOGIC_OP);
glLogicOp(logicOp);
默认是GL_COPY;其他有GL_AND \ GL_OR \ GL_XOR \ GL_CLEAR \ GL_SET

# 字符图元

## 位图/光栅字体
glutBitmapCharacter(font, character);

## 轮廓/笔划字体
glutStrokeCharacter(font, character);

显示列表 diaplay list

定义显示列表

glNewList(listID, listMode); // GL_COMPILE / GL_COMPILE_AND_EXECUTE
glEndList();

创建显示列表

listID = glGenLists(1); //需要检验0

查询是否存在

glIsList(listID);

执行

glCallList(listID);
glCallLists…

删除

glDeleteLists(startID,nLists);

窗口重定型函数

glutReshapeFun(ReshapeFcn);

在窗口形状改变的时候这个函数会触发。在这里需要重新对坐标进行处理。
然后好像程序运行刚刚开始的时候设置窗口大小也会触发这个。

posted @ 2017-08-26 08:26  BirdyC  阅读(489)  评论(0)    收藏  举报