设置投影方式
设置正投影
正投影,又叫平行投影。正投影的最大一个特点是不会出现远小近大的效果,如下图。这种投影通常用在建筑蓝图绘制和计算机辅助设计等平面图形方面,这些行业要求投影后的物体尺寸及相互间的角度不变,以便施工或制造时物体比例大小正确。
GLFrustum::SetOrthographic( GLfloat xMin, //X轴上的可视区域最小值
GLfloat xMax, //X轴上的可视区域最大值
GLfloat yMin, //Y轴上的可视区域最小值
GLfloat yMax, //Y轴上的可视区域最大值
GLfloat zMin, //Z轴上的可视区域最小值
GLfloat zMax); //Z轴上的可视区域最大值
设置透视投影
透视投影符合人们心理习惯,即离视点近的物体大,离视点远的物体小,远到极点即为消失,成为灭点。它的视景体类似于一个被切掉顶部的金字塔。这个投影通常用于动画、视觉仿真以及其它许多具有真实性反映的方面。如下图:
GLFrustum::SetPerspective( float fFov, //垂直方向上的视场角度
float fAspect, //窗口的宽高比
float fNear, //近剪裁面距离
float fFar); //远剪裁面距离
固定管线下的着色器
创建着色器的统一方法,依据传入不同的参数,创建不同的着色器
GLShaderManager:: UserStockShader(argv1, argv2, ...);
单元着色器
GLShaderManager:: UserStockShader( GLT_SHADER_IDENTITY, //固定着色器类型
GLfloat vColor[4]); //颜色 RGBA 格式
用于绘制默认OpenGL坐标系(-1,1)下图形,图形所有片段都会以一种颜色填充
平面着色器
GLShaderManager:: UserStockShader( GLT_SHADER_FLAT, //固定着色器类型
GLfloat mvp[16], //4*4变换矩阵
GLfloat vColor[4]); //颜色 RGBA 格式
相对于单元着色器,平面着色器增加了变换矩阵参数,在绘制图形的时候,可以应用变换(模型、投影变化)。
上色着色器
GLShaderManager:: UserStockShader( GLT_SHADER_SHADED, //固定着色器类型
GLfloat mvp[16]); //4*4变换矩阵
相对于平面着色器,上色着色器减少了颜色参数,在绘制图形的时候,可以应用变换(模型、投影变化),颜色将会平滑的插入到顶点之间称为平滑着色。
默认光源着色器
GLShaderManager:: UserStockShader( GLT_SHADER_DEFAULT_LIGHT, //固定着色器类型
GLfloat mvMatrix[16] //4*4模型矩阵
GLfloat pMatrix[16] //4*4投影矩阵
GLfloat vColor[4]); //颜色 RGBA 格式
在绘制图形时, 可以应⽤用变换(模型/投影变化) 这种着⾊器还会使绘制的图形产生阴影和光照的效果。
点光源着色器
GLShaderManager:: UserStockShader( GLT_SHADER_POINT_LIGHT_DIEF, //固定着色器类型
GLfloat mvMatrix[16] //4*4模型矩阵
GLfloat pMatrix[16] //4*4投影矩阵
GLfloat vLightsPos[] //点光源位置
GLfloat vColor[4]); //漫反射颜色 RGBA 格式
在绘制图形时, 可以应⽤用变换(模型/投影变化) 这种着色器会使绘制的图形产生阴影和光照的效果.它与默认光源着⾊器⾮常类似,区别只是光源位置可能是特定的.
纹理替换矩阵着色器
GLShaderManager::UserStockShader( GLT_SHADER_TEXTURE_REPLACE, //固定着色器类型
GLfloat mvMatrix[16], //4*4模型矩阵
GLint nTextureUnit); //纹理单元
在绘制图形时, 可以应用变换(模型/投影变化)这种着⾊器通过给定的模型视图投影矩阵.使用纹理单元来进行颜⾊填充.其中每个像素点的颜色是从纹理中获取.
纹理调整着色器
GLShaderManager::UserStockShader( GLT_SHADER_TEXTURE_MODULATE, //固定着色器类型
GLfloat mvMatrix[16], //4*4模型矩阵
GLfloat vColor[4], //颜色 RGBA 格式
GLint nTextureUnit); //纹理单元
在绘制图形时, 可以通过给定的模型视图投影矩阵应用变换(模型/投影变化)。 着⾊器将一个纹理和颜色进行混合后填充到片元中。
纹理光源着色器
GLShaderManager::UserStockShader( GLT_SHADER_TEXTURE_POINT_LIGHT_DIEF, //固定着色器类型
GLfloat mvMatrix[16], //4*4模型矩阵
GLfloat pMatrix[16], //4*4投影矩阵
GLfloat vLightPos[3], //点光源位置
GLfloat vBaseColor[4], //颜色 RGBA 格式
GLint nTextureUnit); //纹理单元
在绘制图形时, 可以通过给定的模型视图投影矩阵应用变换(模型/投影变化)。 着⾊器将一个纹理通过漫反射照明计算进行调整(相乘)