2-3 GLSL in out
来源:http://www.tudoupe.com时间:2022-02-03
目录
- 前言
- 一、典型shader程序结构
- 二、 对shader处理数据的自己思考
- 1. VBO(buffer缓冲)
- 2.VAO(Array)
- 3.解释shader:
- 三、 类型
- 四、shader的链接
- 五 使用资源来添加外部shader
- 六 一个使用多个Attrib的代码样例
前言
概念 GLSL :OpenGL Shading Languange
写shader的语言。
配合:
- QOpenGLShader使用
- QOpenGLShaderProgram使用
一、典型shader程序结构
in: 表示从外部输入到本shader中
out:本shader的数据要向后传递
二、 对shader处理数据的自己思考
1. VBO(buffer缓冲)
就是一个连续内存,就是从左到右一直下去
VBO图示(就是连续内存,毫无意义)
2.VAO(Array)
2.1 VAO解释了连续内存如何切块、换行
2.2 则VAO把VBO转换成了数据库表
2.3 每一行都对应一个显卡核心(CORE)= 每个核心运行一个shader (运行main函数)
2.4 VAO保证有16个4分量的顶点的属性
(也就是一行最多64个值,对应一行)
glGetIntegerv(GL_MAX_VERTEX_ATTRIBS,&nAtrributes); // 或多多少个属性
此图中的core 就可以直接理解一个shader的运行实例
3.解释shader:
a. location=0 <-- VAO.Attrib(0)
b. in 表示传递到后面变量接着
三、 类型
1.基础数据类型
类似c++ :int float double uint bool
2.向量
| 类型 | 例子 | 说明 |
|---|---|---|
| vecn | vec4 | float * 4 前面没有类型=float |
| bvecn | bvec4 | bool*4 |
| ivecn | ivec2 | int*2 |
| uvecn | uvec2 | uint*2 |
| dvecn | dvec2 | double*2 |
3.vec的swizzling(重组),展开
四、shader的链接
vertextColor
1.在顶点着色器上声明为out – 要输出到后面
2. 在片段着色器上声明为in – 从前面输入过来的
五 使用资源来添加外部shader
| 图 | 解释 |
|---|---|
![]() |
文件:新建文件和项目–q资源文件 |
![]() |
输入资源名称res, 生成res.qrc文件 |
![]() |
添加->添加前缀 – >前缀 /shader |
![]() |
添加-添加文件-选择文件 |
![]() |
加入外部文件后 |
![]() |
编辑框可以添加各种程序 |
六 一个使用多个Attrib的代码样例
主要理解
glVertexAttribPointer(0,3,GL_FLOAT,GL_FALSE,6sizeof(float),(void)0);
glVertexAttribPointer(1,3,GL_FLOAT,GL_FALSE,6sizeof(float),(void)(3*sizeof(float)));
一行中:前面坐标,后面颜色
上一篇:kali+linux系统u盘安装
下一篇:电脑系统重装使用U盘的步骤教程
相关新闻
- 2023-05-06 微pe怎么初始化U盘(微pe怎么恢复初
- 2023-05-06 Xp系统boot 进入pe(boot manager 怎么进入
- 2023-05-06 win pe修复bcdboot(pe修复系统)
- 2023-05-06 win7更新失败 pe(win7更新失败还原更
- 2023-05-06 u盘装了pe读取不了(u盘能进pe读取不
- 2023-05-06 u盘pe 发热(u盘发热烫手)
- 2023-05-06 u盘pe下看不到硬盘(u盘启动pe看不到
- 2023-05-06 pe盘 ntfs(u盘ntfs格式)
- 2023-05-06 sony笔记本进入pe模式(联想笔记本怎
- 2023-05-06 pe启动盘进不去(pe启动盘进不去系统
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|






