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盘安装
下一篇:没有了
相关新闻
- 2022-02-03 kali+linux系统u盘安装
- 2022-02-03 Open3D 计算点云平均密度(版本二)
- 2022-02-03 Qt+OpenCV联合开发(十八)--多边形填
- 2022-02-03 nec老笔记本怎么进pe
- 2022-02-03 使用tensorflow2.3训练数字识别模型并
- 2022-02-02 Mac使用Appium连接真机与appium-inspec
- 2022-02-02 【唐老狮】C#——函数
- 2022-02-02 Win10 系统下VisualStudio2019 配置Open3
- 2022-02-02 Qt+OpenCV联合开发(十六)--图像几何
- 2022-02-02 Qt+OpenCV联合开发(十五)--像素值统
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|






