OpenGL学习——(2)概念补充
来源:互联网 发布:淘宝卖家信誉等级 编辑:程序博客网 时间:2024/06/15 15:48
概念补充
1.OpenGL对三维物体的绘制方式:
a.网络线绘制方式:仅绘制三维物体的网格轮廓线。
b.深度优先网格线绘图方式:用网格线方式绘图,使得远处物体颜色深与近处物体颜色。
c.反走样网格线绘图方式:用网格线方式绘图,为减少图形线条的参差不齐。
d.平面消隐绘图方式:对模型隐藏面进行消隐,对模型的平面单元按光照程度进行着色但不进行光滑处理。
e.光滑消隐绘图方式:对模型进行消隐按照光照渲染着色的过程中再进行光滑处理,这种方式更接近于现实。
f.加粗和纹理的绘图方式:在模型表面贴上纹理甚至加上光照阴影,使得三维景观现象照片一样。
g.运动模糊的绘制方式:模拟物体运动时人眼观察所感觉的动感现象。
h.大气环境效果:在三维景观中加入如雾等大气环境效果,使人身临其境。
i.深度域效果:类似于照相机镜头效果,模型在聚焦点出清晰,反之则模糊。
2.OpenGL的基本工作流程
在绘制图形时包括俩种数据需要被处理,分别是几何顶点数据和图像象素数据。
- 数据类型
几何顶点数据包括:顶点集、线集、多边形集。
图像象素数据集:象素集、影像集、位图集。
- 数据状态:
这俩种数据要么直接被处理,要么先存储在显示列表中。 - 数据处理方式:
几何顶点数据使用运算器进行逐个点的操作。
图像数据与几何数据处理方式不同,需要在计算后进行纹理映射。(处理后数据放在纹理组装用的内存中)
俩种数据被处理后需要进行光栅化形成图形碎片,最后统一存放在帧缓存器中实现图形的显示。
3.函数库介绍:
在Windows环境下OpenGL包含100多个库函数,函数开头都以“gl”标记,且支持其他四类库:
a.OpenGL实用库:43个,以glu开头,通过调用核心函数起作用,可以进行纹理映射、坐标变换、多边形分化以及绘制一些简单实体;
b.OpenGL辅助库:31个,以aux开头,用于窗口管理、输入输出以及绘制一些简单的三维形体;
c.Windows专用类库:6个,以wgl开头,用以连接OpenGL和WindowsNT
d.Win32 API函数:5个,没有专用前缀,用以处理象素存储格式和双缓冲区。
4.向OpenGL着色器传递渲染数据的方法——属性、uniform和纹理三种
属性
所谓属性就是一个对每个定点都要作改变的数据元素。属性值(浮点数、整数、布尔类型)以四维向量形式进行内部存储,前三个分别是性x,y,z,第四个分量基本上为1。Uniform值
Uniform变量实际上可以无数次限制地使用,在值设置完时就紧接着发出渲染一个图元批次的命令。其会在每个批次改变一次,而不是每个顶点改变一次。(常用在定点渲染中设置变换矩阵)纹理
任何大型浮点数据块(如小号资源很大的函数的大型查询表)都可以通过这种方式传递给着色器。
5.着色器类型
a.单位着色器
GLShadermanager::UseStockShader(GLT_SHADER_IDENTITY,GLfloat vColor[4]);
b.平面着色器
GLShadermanager::UseStockShader(GLT_SHADER_FLAT,GLfloat mvp[16],GLfloat vColor[4]);
c.上色着色器
GLShadermanager::UseStockShader(GLT_SHADER_SHADED,GLfloat mvp[16]);
d.默认光源着色器
GLShadermanager::UseStockShader(GLT_SHADER_DEFAULT_LIGHT,GLfloat mvMatrix[16],GLfloat pMatrix[16],GLfloat vColor[4]);
e.点光源着色器
GLShadermanager::UseStockShader(GLT_SHADER_POINT_LIGHT_DIFF,GLfloat mvMatrix[16],GLfloat pMatrix[16],GLfloat vLightPos[3],GLfloat vColor[4]);
f.纹理替换矩阵
GLShadermanager::UseStockShader(GLT_SHADER_TEXTURE_REPLACE,GLfloat mvpMatrix[16],GLint nTextureUnit);
g.纹理调整着色器
GLShadermanager::UseStockShader(GLT_SHADER_TEXTURE_MODULATE,GLfloat mvpMatrix[16],GLfloat vColor,GLint nTextureUnit);
h.纹理光源着色器
GLShadermanager::UseStockShader(GLT_SHADER_TEXTURE_POINT_LIGHT_DIFF,GLfloat mvMatrix,GLfloat pMatrix[16],GLfloat vLightPos[3],GLfloat vBaseColor[4],GLint nTextureUnit);
- OpenGL学习——(2)概念补充
- 从零开始学习OpenGL——基础概念
- opengl es学习笔记2(着色器补充,示例)
- MAVEN 基本的一些概念 (笔记—补充中。。。。。)
- openGL学习笔记 简单概念
- kmGLTranslatef概念(OpenGL)
- OpenGL ES(Android)的学习路径(概念)
- OpenGL学习(2)
- Mongodb学习(2)概念学习——ACID原则
- Mongodb学习(2)概念学习——基本内容
- HTML表单学习2——表单元素补充
- Delphi学习笔记一——单元文件(补充)
- C#学习笔记(补充)——扩展方法、事件
- Delphi学习笔记一——单元文件(补充)
- OpenGL学习笔记(2)——动画制作
- OpenGL学习——(1)
- OpenGL学习——(3)库函数
- OpenGL基础概念(一)
- 内核的 工作队列 使用方法,struct work_struct
- 解决vs2005打开UTF-8编码的文件乱码和修改新增文件时的默认编码方式的问题
- 添加特定分贝(db)的高斯噪声的一种简单方法
- POJ --- 1679 【判断最小生成树是否唯一】
- iOS控制器在push或者pop时导航栏出现黑块的解决办法
- OpenGL学习——(2)概念补充
- Java类锁
- 关于智能IVR系统的一些思考
- 算法概论课后8.9
- 【Python】Python数据分析环境搭建02
- Webservice返回json数据格式不带xml头部
- UVA --- 10462 【次小生成树】
- 36 linux内核里的HZ定时器与timer_list定时器
- mysql binlog转sql