openGL学习笔记(1)——常用方法原型解释
1、初始化,设置背景色
void glClear(int mask) 清除缓存
实參含义:GL10.GL_COLOR_BUFFER_BIT 清除颜色缓存
GL10.GL_DEPTH_BUFFER_BIT 清除深度缓存
希望同时清除多个缓存,将实參用或(|)连接即可
void glClearColor(float red,float green,float blue,float alpha) 设置背景色
2、视点变换
视点变换设置视点的位置和方向。视点默认位于坐标系原点,指向负z轴。
3、模型变换(几何变换)
模型变换在世界坐标系进行,物体模型原点默认在坐标系中心。有三个变换
平移
void glTranslatef(float x,float y,float z)
实參为沿着x,y,z轴向右平移的距离
旋转
void glRotatef(float angle,float x,float y,float z)
以原点和点(x,y,z)构成的直线为轴,逆时针旋转angle大小的角度
缩放
void glScalef(float x,float y,float z)
实參为三轴上的缩放因子
4、投影变换
投影变换的目的是创建一个视景体,把视景体之外的场景裁剪掉。投影变换有两种,透视投影(perspective projection)和正交投影(orthographic projection)。
透视投影
void glFrustumf(float left, float right, float bottom, float top, float zNear, float zFar)
正交投影
void glOrthof(float left, float right, float bottom, float top, float zNear, float zFar)
5、视口变换
视口平面是视景体内的物体投影到的二维平面,视口变换就是调整视口大小。
void glViewport(int x,int y,int width,int height)
变换后的视口是以坐标(x,y)为左下顶点,宽为width,高为height的矩形
6、裁剪变换
7、矩阵栈操作
openGL的变换矩阵为4*4矩阵
设置当前矩阵
void glLoadMatrixf(float[] m,int offset) 或者 void glLoadMatrixf(FloatBuffer m) 设置当前变换矩阵
void glLoadIdentity() 设置当前矩阵为单位矩阵
压入、弹出矩阵
void glPushMatrix() 依次压入当前所有矩阵
void glPopMatrix() 弹出栈顶矩阵
两个方法联合操作可以保留下次变换之前的矩阵状态。
8、打开和关闭裁剪等功能
打开
void glEnable(int cap)
实參含义:GL_CULL_FACE 打开背面剪裁
GL_DEPTH_TEST 打开深度测试
GL_DITHER 打开抗抖动
关闭
void glDisable(int cap)
9、设置着色模型
void glShadeModel(int mode)
实參含义:GL_SMOOTH 平滑着色,根据三个顶点的颜色进行渐变着色,相邻两点之间的颜色平滑过渡
GL_FLAT 不平滑着色,使用最后一个顶点的颜色进行填充
10、设置旋绕方向
openGL默认多边形顶点逆时针排列为正面
void glFrontFace(int mode)
实參含义:GL_CW 顺时针为正面
GL_CCW 逆时针为正面
11、设置矩阵模式
void glMatrixMode(int mode)
实參含义:GL_MODELVIEW 设置为模型(几何)变换矩阵
GL_PROJECTION 设置为投影变换矩阵
12、绘图
openGL绘图需要三个数组:顶点坐标数组,顶点颜色数组和顶点索引数组(索引可以不要)
启用和禁用顶点数组
void glEnableClientState(int array) 启用
实參含义:GL_VERTEX_ARRAY 启用顶点坐标数组
GL_COLOR_ARRAY 启用顶点颜色数组
void glDisableClientState(int array) 禁用
为画笔指定顶点坐标数据
void glVertexPointer(int size,int type,int stride,Buffer pointer)
形參含义:size为坐标维数(一般等于3),type为坐标值的类型(GL_FIXED代表int型,GL_FLOAT代表float型),stride为步长(连续顶点之间的间隔),pointer为顶点数据的buffer
为画笔指定颜色顶点坐标数据
void glColorPointer(int size,int type,int stride,Buffer pointer)
形參含义:同顶点指定方法,size一般等于4
索引法绘图
void glDrawElements(int mode,int count,int type,Buffer indices)
形參含义:mode代表绘图方式,常见的方式有:GL_POINTS(画点),GL_LINES(每两点画一线段),GL_LINE_STRIP(按顺序相邻两点画一线段),GL_LINE_LOOP(按顺序相邻 顶点画一线段,末尾顶点与第一个顶点再画一线段),GL_TRIANGLES(每三个顶点画一三角形),GL_TRIANGLE_STRIP(按顶点顺序,每个顶点和它后面相邻的两个顶点画一三角形),GL_TRIANGLE_FAN(第一个顶点为共用顶点,其之后的顶点按照顺序每相邻两个和它构成一个三角形);
count代表索引数组的长度(不同于顶点个数)
type代表索引数据类型,如:GL_UNSIGNED_BYTE,GL_UNSIGNED_SHORT
indices代表索引数据的buffer
非索引法绘图
void glDrawArrays(int mode,int first,int count)
形參含义:mode代表绘图方式
first代表第一个顶点的编号
count代表顶点个数