第四弹 OpenGL 快速理解图形API(二)

2019-05-16  本文已影响0人  Mr_Lxh

正投影/透视投影

  • 我们通常在2D会图中使用正投影,并在我们的几何图形中将Z坐标设置为0.0。
  • 我们把上图笛卡尔可视区域叫做视景体
  • 视景体外的几何图形将会被裁减掉,也就是说,它将被沿着视景体的边界进行裁剪
透视投影.png
GLFrustum类通过setPerspective 方法为我们构建一个平截头体
CLFrustum::SetPerspective(float fFov , float fAspect ,float fNear ,float fFar)
  • 参数:
    fFov:垂直方向上的视场角度
    fAspect:窗口的宽度与⾼度的纵横比
    fNear:近裁剪面距离
    fFar:远裁剪面距离
    纵横比 = 宽(w)/高(h)

OpenGL 提供的存储着色器

GLShaderManager::UserStockShader(GLT_SHADER_IDENTITY,GLfloat vColor[4]);

参数1:存储着色器种类 -单元着色器
参数2:颜色
使用场景:绘制默认OpenGL 坐标系(-1,1)下图形. 图形所有片段都会以一种颜色填充

GLShaderManager::UserStockShader(GLT_SHADER_FLAT,GLfloat mvp[16],GLfloat vColor[4]);

参数1:存储着色器种类-平面着色器
参数2:允许变化的4*4矩阵
参数3:颜色
使用场景:在绘制图形时,可以应用变换(模型/投影变化)

GLShaderManager::UserStockShader(GLT_SHADER_SHADED,GLfloat mvp[16]);

参数1:存储着色器种类-上色着色器
参数2:允许变化的4*4矩阵
使用场景:在绘制图形时,可以应用变换(模型/投影变化)颜色将会平滑的插入到顶点之间成为平滑着色

GLShaderManager::UserStockShader(GLT_SHADER_DEFAULT_LIGHT,GLfloat mvMatrix[16],GLfloat pMatrix[16],GLfloat vColor[4]);

参数1:存储着色器种类-默认光源着色器
参数2:模型4*4矩阵
参数3:投影4 *4矩阵
参数4:颜色值
使用场景:在绘制图形时, 可以应⽤变换(模型/投影变化) 这种着⾊器会使绘制的图形产⽣阴影和光照的效果.

GLShaderManager::UserStockShader(GLT_SHADER_POINT_LIGHT_DIEF,GLfloat mvMatrix[16],GLfloat pMatrix[16],GLfloat vLightPos[3],GLfloat vColor[4]);

参数1:存储着色器种类-点光源着色器
参数2:模型4*4矩阵
参数3:投影4 *4矩阵
参数4:点光源的位置
参数5:漫反射颜色值
使用场景:在绘制图形时, 可以应用变换(模型/投影变化) 这种着色器会使绘制的图形产⽣
阴影和光照的效果.它与默认光源着⾊器⾮常类似,区别只是光源位置可能是特定的.

GLShaderManager::UserStockShader(GLT_SHADER_TEXTURE_REPLACE,GLfloat mvMatrix[16],GLint nTextureUnit);

参数1:存储着色器种类-纹理替换矩阵着色器
参数2:模型4*4矩阵
参数3:纹理单元
使用场景:在绘制图形时, 可以应⽤用变换(模型/投影变化)这种着⾊器通过给定的模 型视图投影矩阵.使用纹理单元来进行颜色填充.其中每个像素点的颜色是从纹理中 获取.

GLShaderManager::UserStockShader(GLT_SHADER_TEXTURE_MODULATE,GLfloat mvMatrix[16],GLfloat vColor[4],GLint nTextureUnit);

参数1:存储着色器种类-纹理调整着色器
参数2:模型4*4矩阵
参数3:颜色值
参数4:纹理单元
使用场景:在绘制图形时, 可以应⽤用变换(模型/投影变化)这种着色器通过给定的模 型视图投影矩阵. 着色器将一个基本色乘以一个取自纹理单元nTextureUnit 的纹理.将颜色与纹理进行颜色混合后才填充到片段中.

OpenGL 基本图元(7种)

图元 描述
GL_POINTS 每个顶点在屏幕上都是单独点
GL_LINES 每一对顶点定义一个线段
GL_LINE_STRIP 一个从第一个顶点依次经过每个后续顶点而绘制的线条
GL_LINE_LOOP 和GL_LINE_STRIP相同,但是最后一个顶点和第一个顶点连接成闭合线圈
GL_TRIANGLES 每三个顶点定义一个新的三角形
GL_TRIANGLE_STRIP 共用一个条带(strip)上的顶点的一组三角形
GL_TRIANGLE_FAN 以一个圆点为中心呈扇形排列,共用相邻顶点的一组三角形
OpenGL基本图元.png
上一篇 下一篇

猜你喜欢

热点阅读