美文网首页
OpenGL 固定管线

OpenGL 固定管线

作者: ChiLeung | 来源:发表于2019-05-18 22:51 被阅读0次

OpenGL固定管线下的存储着色器类型

1.单元着色器

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

参数1: 存储着色器种类-单元着色器

参数2: 颜⾊

使⽤用场景: 绘制默认OpenGL 坐标系(-1,1)下图形. 图形所有片段都会以一种颜色填充

2.平⾯着⾊器

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

参数1: 存储着色器种类-平⾯着色器 

参数2: 允许变化的4*4矩阵

参数3: 颜⾊

3.上色着色器

使用场景: 在绘制图形时, 可以应用变换(模型/投影变化).

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

参数1: 存储着色器种类-上⾊着色器 

参数2: 允许变化的4*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: 颜色值

使⽤场景: 在绘制图形时, 可以应用变换(模型/投影变化) 这种着色器会使绘制的图形产生阴影和光照的效果.

5.点光源着色器

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: 漫反射颜色值

使⽤用场景: 在绘制图形时, 可以应用变换(模型/投影变化) 这种着⾊器会使绘制的图形产⽣阴影和光照的效果.它与默认光源着⾊器⾮常类似,区别只是光源位置是特定的.

6.纹理替换矩阵着⾊器

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

参数1: 存储着⾊器种类-纹理替换矩阵着色器 

参数2: 模型4*4矩阵

参数3: 纹理单元

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

7.纹理调整着⾊器

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

参数1:  存储着⾊器种类-纹理调整着⾊器

参数2:  模型4*4矩阵

参数3:  颜色值

参数4:  纹理单元

使用场景: 在绘制图形时, 可以应用变换(模型/投影变化)这种着色器通过给定的模型视图投影矩阵. 着⾊器将一个基本色乘以一个取⾃纹理单元nTextureUnit的纹理.将颜色与纹理进行颜色混合后才填充到片段中.

8.纹理光源着色器

GLShaderManager::UserStockShader(GLT_SHADER_TEXTURE_POINT_LIGHT_DIEF,G Lfloat mvMatrix[16],GLfloat pMatrix[16],GLfloat vLightPos[3],GLfloat vBaseColor[4],GLint nTextureUnit);

参数1: 存储着色器种类-纹理光源着色器 

参数2: 模型4*4矩阵

参数3: 投影4*4矩阵

参数4: 点光源位置

参数5: 颜色值(⼏何图形的基本色)

参数6: 纹理单元

使⽤场景: 在绘制图形时, 可以应用变换(模型/投影变化)这种着⾊器通过给定的模型视图投影矩阵. 着⾊器将⼀个纹理通过漫反射照明计算进行调整(相乘).



OpenGL 基本7种基本图元

OpenGL 基本图元

下面的图示中,常用的是1,2,3,7,8,9

1.GL_POINTS

描述:每个顶点在屏幕上都是单独点

示例

2.GL_LINES

描述:每一对顶点定义一个线段

示例(这里只出现一条线段是因为这个组成这个线段的点是两两对应的,案例中只有三个点,所以只能生成一条线)

3.GL_LINE_STRIP

描述:⼀个从第一个顶点依次经过每一个后续顶点而绘制的线条

示例

4.GL_LINE_LOOP

描述:和GL_LINE_STRIP相同,但是最后⼀个顶点和第一个顶点连接起来了

示例

5.GL_TRIANGLES

描述:每3个顶点定义一个新的三角形

示例

6.GL_TRIANGLE_STRIP(三⻆形带)

描述:共用一个条带(strip)上的顶点的一组三⻆角形。对于很多表面或者形状而言,我们会需要绘制⼏个相连的三⻆形. 这是我们可以使用GL_TRIANGLE_STRIP图元绘制一串相连三角形,从⽽节省⼤量的时间.

优点:

1. ⽤前3个顶点指定第1个三⻆形之后,对于接下来的每⼀个三⻆形,只需要再指定1个顶点。需要绘制⼤量的三⻆形时,采⽤这种⽅法可以节省大量的程序代码和数据存储空间

2.提供运算性能和节省带宽。更少的顶点意味着数据从内存传输到图形卡的速度更快,并且顶点着色器需要处理的次数也更少了。

示例

7.GL_TRIANGLE_FAN(三⻆形扇)

描述:以一个圆点为中心呈扇形排列,共用相邻顶点的一组三角形。对于很多表面或者形状而言,我们会需要绘制几个相连的三⻆形. 这时我们可以使用GL_TRIANGLE_FAN图元绘制⼀组围绕⼀个中⼼点相连的三角形


示例



相关文章

  • OpenGL(四): 存储着色器

    OpenGL存储着色器 在OpenGL 3.0 之前,OpenGL包含固定功能的管线,这些固定管线(或者叫存储着色...

  • OpenGL 固定管线

    OpenGL固定管线下的存储着色器类型 1.单元着色器 GLShaderManager::UserStockSha...

  • OpenGL固定管线

    固定管线/存储着色器初始化 单元着色器 使用场景:绘制默认OpenGL 坐标系(-1,1)下的图形,图形所有片段都...

  • 2-1.管线,投影,坐标系

    管线在OpenGL下渲染图形,就会经历⼀个⼀个节点.⽽这样的操作可以理解为管线.固定管线:在早期的OpenGL 版...

  • OpenGL ES pipeline

    pipeline流程 OpenGL ES 1.x针对固定管线硬件的,OpenGL ES 2.x针对可编程管线硬件。...

  • 渲染管线--固定管线

    OpenGL有固定管线和可编程管线两种 固定管线 使用固定管线时,不需要开发者过多的去关心渲染的流程,也不允许去干...

  • OpenGL_002_OpenGL基础渲染

    OpenGL基础渲染 一、OpenGL 与 着色器 在OpenGL 3.0之前,OpenGL包含一个固定功能的管线...

  • OpenGL 固定存储器着色器理解

    在OpenGL 3.1之前,只有一种固定管线着色器,而在3.1之后被启用,取而代之的是可编程管线,但是理解固定管线...

  • OpenGL ES GLSL 基本概念

    OpenGL ES 的版本 OpenGL ES 1.X :针对固定功能流⽔水管线硬件OpenGL ES 2.X :...

  • OpenGL ES入门-01

    前言 OpenGL ES2.0之前是固定管线绘制图形,2.0之后开始了可编程的绘制管线。所谓固定管线即系统只提供A...

网友评论

      本文标题:OpenGL 固定管线

      本文链接:https://www.haomeiwen.com/subject/xwlxzqtx.html