zoukankan      html  css  js  c++  java
  • 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代表顶点个数   

        

  • 相关阅读:
    Python 模块 itertools
    Python 字符串的encode与decode
    python 模块 hashlib(提供多个不同的加密算法)
    暴力尝试安卓gesture.key
    hdu 1300 Pearls(DP)
    hdu 1232 畅通工程(并查集)
    hdu 1856 More is better(并查集)
    hdu 1198 Farm Irrigation(并查集)
    hdu 3635 Dragon Balls(并查集)
    hdu 3038 How Many Answers Are Wrong(并查集)
  • 原文地址:https://www.cnblogs.com/yapollo/p/3537847.html
Copyright © 2011-2022 走看看