OpenGL ES基础一

OpenGL ES基础一_第1张图片
timg.jpeg

名词解释

pipleline:管线
opengl applocation: geometry(几何图形) + texture(纹理贴图)
vertex data(顶点数据):lighting(光照) transform(变换) scale(缩放)
geometry: rasterization(光栅) clipping(剪裁)
fragment(段): fog(雾) + texture
framebuffer(帧缓冲区): stecil(蒙版) z-test:深度测试 alpha:透明 blending(混合)
eyeball(眼球)

近平面
远平面
frustum:平截头体,视景体(远近平面之间的棱台)
伪变换
GLSurfaceView:GL表层视图输出openGL画面的控件
render: 渲染器,绘制openGL 的类
viewPort : 视口,输出画面的区域
matrix:矩阵

投影:
透视投影:有深度,越远越小(站在铁轨,远处线相交 )
正投影:没有深度概念,相同大小
状态机

gl.glMatrixModel(int n):矩阵模式,openGL基于状态的,操纵很多矩阵,通过该函数指定使用哪个矩阵
如:GL10.GL_PROJECTION 投影矩阵
GL10.GL_MODELVIEW 模态视图矩阵
指定哪个矩阵之后,需要先加载单位矩阵(gl.glLoadIdentity() 类似于矩阵清零)

gl.glFrustumf(,,,,,,)
//参数
left:左侧距离
right:
bottom
top
zNear:近平面距离
zFar:远平面距离

设置眼睛的位置
//眼球的坐标,观察的点,向上的向量
//操作的是模型视图矩阵,需要先设置gl.glMatrixMode(GL10.GL_MODELVIEW);
gluLookAt(GL10 gl, float eyeX, float eyeY, float eyeZ, float centerX, float centerY, float centerZ, float upX, float upY, float upZ)

第一组eyex, eyey,eyez 相机在世界坐标的位置
第二组centerx,centery,centerz 相机镜头对准的物体在世界坐标的位置
第三组upx,upy,upz 相机向上的方向在世界坐标中的方向
你把相机想象成为你自己的脑袋:
第一组数据就是脑袋的位置
第二组数据就是眼睛看的物体的位置
第三组就是头顶朝向的方向(因为你可以歪着头看同一个物体)
参考:http://www.cnblogs.com/jiangu66/archive/2013/04/06/3003122.html
1.后面的三个参数(0.0,1.0,0.0),y轴为1,其余为0,表示脑袋朝上,就是正常的情况

timg.jpeg

这样表示脑袋向下,即人眼倒着看
timg.jpeg

即人的脑袋像右歪90度来看,即顺时针转90度(换个角度思考就是壶逆时针转90度)
timg.jpeg

使用OpenGL步骤

  • 1.创建GLSurfaceView对象
  • 2.创建GLSurfaceView.render实现类
  • 3.设置activity的contentview,以及设置view的render对象
  • 4.实现render类的过程
    a.onSurfaceCreated()方法
    1.设置清屏的颜色和启用顶点缓冲区
    b.onSurfaceChanged()方法
    1.设置viewPort(视口)
    2.操作投影矩阵,设置平截头体(比例通常和视口比例相同,否则输出画面会走样)
    c.onDrawFrame()方法
    1.清除颜色缓冲区
    gl.glClearColor(0,0,0,1);
    2.操作模型视图矩阵,设置眼球的参数
    gl.glMatrixMode(GL10.GL_MODELVIEW);
    gl.glLoadIdentity();
    GLU.gluLookAt(gl,0,0,0,0,0,5,0,1,0);
    3.定义图形顶点坐标值数组
    4.将顶点坐标转换成缓冲区数据
    5.设置绘图颜色
    6.指定顶点缓冲区指针
    //3.表示3维点,使用三个坐标值表示一个点
    //type:GL10.GL_FLOAT 每个点的数据类型
    //stride:0,跨度
    gl.glVertexPointer(3,GL10.GL_FLOAT,0,ibb);
    7.绘图
    //3. 点的数量
    //0. 起始点
    gl.glDrawArrays(GL10.GL_TRIANGLES,0,3);

你可能感兴趣的:(OpenGL ES基础一)