openGL+QT
文章平均质量分 73
zhlei_12345
这个作者很懒,什么都没留下…
展开
-
6-1 摄像机Camera
目录前言一 相机二 计算View前言上节课:把世界坐标系里面的东西 都 变基到了相机坐标系,本节课,将讲解手动计算view一 相机1.相机在基底为"世界坐标系下的点和防线"cameraPos ,相机在世界坐标系的位置cameraDirection,相机在世界坐标系的方向变量说明1说明2相机坐标(0,0,2)cameraIDir实际上是和看的方向相反cameraPos相机坐标cameraDirection相机背后的向量相机蓝色的箭头Qt中使用转载 2022-02-05 16:02:46 · 148 阅读 · 0 评论 -
5-3 代码实现3D效果
目录1.顶点着色器,三个重要矩阵2.在 CPU端设置三个重要矩阵本节程序 下载(面)本节程序 下载(立方体)1.顶点着色器,三个重要矩阵#version 330 corelayout(location=1) in vec3 aPos;layout(location=2) in vec2 aTextureCoord;out vec2 texcoord;uniform mat4x4 model;uniform mat4x4 view;uniform mat4x4 perspective;转载 2022-02-05 10:52:31 · 692 阅读 · 0 评论 -
5-2 透视投影
目录前言一 平截头体二 透视除法前言本节:透视矩阵一 平截头体1. 平截头体由投影矩阵创建的平截头体(Frustum) - 就是在世界坐标系中圈出来一个棱台(如下棱台)二 透视除法在顶点渲染中,投影是最后一步Vclip=Mprojection⋅Mview⋅Mmodel⋅VlocalV _{clip} = M _{projection} · M _{view}· M _{model} · V _{local} Vclip=Mprojection⋅Mview⋅Mmodel转载 2022-02-05 09:44:17 · 411 阅读 · 0 评论 -
5-1 坐标系统
目录前言一前言重要矩阵: 模型(Model) 观察(View) 投影(Projection) 三个矩阵一上图讲解:顶点坐标起始于局部空间(Local Space)之后变化为世界坐标(World Coordinate)->观察坐标(View Coordinate) -> 裁剪坐标(Clip Coordinate)最后变为屏幕坐标(Screen Coordinate)#mermaid-svg-u9152sAtd4lZKMdJ .label{font-family:'trebuche转载 2022-02-04 20:00:13 · 97 阅读 · 0 评论 -
4-4 代码实现 矩阵
目录前言一 渲染器中的 mat4x4二 产生时间signal三 调用update() 去更新 paintGL()前言本节代码:下载地址一 渲染器中的 mat4x4uniform mat4x4 mat;vec4 = 列矩阵#version 330 corelayout(location=1) in vec3 aPos;layout(location=2) in vec3 aColor;layout(location=3) in vec2 aTextureCoord;out vec4 our转载 2022-02-04 17:11:21 · 363 阅读 · 0 评论 -
4-3 缩放 位移 旋转 矩阵
上一章学习了单位矩阵列向量=[xyzw−齐次坐标]列向量=\left[ \begin{matrix} x\\ y \\ z \\ w-齐次坐标 \end{matrix} \right]列向量=⎣⎢⎢⎡xyzw−齐次坐标⎦⎥⎥⎤单位矩阵=[1000010000100001]单位矩阵=\left[ \begin{matrix} 1 & 0 & 0 & 0 \\ 0& 1 & 0 & 0 \\转载 2022-02-04 15:50:46 · 1371 阅读 · 0 评论 -
0-0 OPENGL+QT
openGL + QT转载 2022-01-26 14:54:21 · 162 阅读 · 0 评论 -
0-1 安装和配置
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、下载Qt二、安装Qt三、配置Qt Creator 和 调试msvc2013 2015版本的程序四 vs配置Qt前言本章简单介绍安装一、下载QtQt官方 下载链接官方太慢,没有截图Qt清华资源 下载连接二、安装Qt1.安装列表MinGW库必须安装这是使用MinGW编译出来的Qt底层dllmsvc2013等可以安装MinGW 5.3必须安装这是MinGW编译工具三、配置Q翻译 2022-01-26 16:12:35 · 168 阅读 · 0 评论 -
0-3 对象
openGL 对象转载 2022-01-29 13:41:23 · 254 阅读 · 0 评论 -
1-1 Hello widget
使用Qt 搭建第一个openGL窗口 。使用QOpenGLWidget类 使用QOpenGLFunction转载 2022-01-29 14:56:09 · 176 阅读 · 0 评论 -
1-2 VAO与VBO
目录前言一、shaders二、标准化坐标NDC (Normalized Device Coordinates)三、从内存给显存传数据前言本节介绍VAO 和 VBO简写展开VAOVertex Array ObjectVBOVertex Buffer ObjectVertex 都是顶点 对[结构体数组]中其中一个对象的称呼都是对象Object --> glGenXXX(纯数字id-对象)最终要实现:画一个三角形glDrawArrays(GL_TRIANG转载 2022-01-29 19:30:51 · 369 阅读 · 0 评论 -
1-3编译连接着色器
编译openGL 的 program1.vertexShader2.fragmentShader转载 2022-01-29 22:24:13 · 162 阅读 · 0 评论 -
1-4 EBO画矩形
openGL VAO VBO EBO 等概念转载 2022-01-30 11:37:20 · 120 阅读 · 0 评论 -
QOpenGLShaderProgram
目录前言一 .类型二、使用代码前言可以使用QOpenGLShader QOpenGLShaderProgram来代替复杂的gl原生函数一 .类型类型说明QOpenGLShadershader 可以代表vertex shader/fragment shaderQOpenGLShaderProgramprogram二、使用代码编译代码 QOpenGLShader* vertex = new QOpenGLShader(QOpenGLShader::Verte转载 2022-01-31 15:35:37 · 1101 阅读 · 0 评论 -
QOpenGLShaderProgram 多EBO对象 函数
使用QT QOpenGLShaderProgram 和多EBO 缓冲对象,绘制叁角和矩形原创 2022-01-31 16:03:48 · 422 阅读 · 0 评论 -
2-3 GLSL in out
目录前言一、典型shader程序结构二、 对shader处理数据的自己思考1. VBO(buffer缓冲)2.VAO(Array)3.解释shader:三、 类型四、shader的链接五 使用资源来添加外部shader前言概念 GLSL :OpenGL Shading Languange写shader的语言。配合:QOpenGLShader使用QOpenGLShaderProgram使用一、典型shader程序结构#version version_nameint type in_var转载 2022-02-02 14:59:05 · 595 阅读 · 0 评论 -
2-4 GLSL layout
顶点着色器:顶点着色器接收的是一种特殊形式的输入,否则效率低下。vertext shader 使用location(元数据metadata)是定输入变量。使用layout标识,使我们可以把它连接到顶点数据可以忽略 layout(location=0),因为可以直接询问glGetAttribLocation(“变量名”);glBindAttribLocation() 绑定。但是仍然建议在shader中直接定义好。一个顶点记录中多属性float vertices[] = { ..转载 2022-02-02 16:25:18 · 1452 阅读 · 0 评论 -
3-1 加载纹理
目录前言一、准备坐标VAO二、 着色器三 加载材质前言本系列文章是以Qt + OpenGL方式完成的本文参考视屏 链接一、准备坐标VAO每个顶点关联一个纹理坐标(texture coordinate),之后再图形的其他片段上进行差值(fragment interpolation)我们需要告诉OpenGL该对纹理如何采样样例VBOfloat vertices[] = { //坐标 color texture coo转载 2022-02-03 12:54:08 · 116 阅读 · 0 评论 -
3-2 纹理单元
glActiveTexture(GL_TEXTURE0); // 这个说明了为什么uniform 是序号了glBindTexture(GL_TEXTURE_2D,texture1);glActiveTexture(GL_TEXTURE1);glBindTexture(GL_TEXTURE_2D,texture2);glDrawWlements(GL_TRIANGELS,6,GL_UNSINGED_INT,0);shaderProgram.use();glUniform1i(glGetUnif转载 2022-02-04 09:50:42 · 120 阅读 · 0 评论 -
3-3 环绕方式
目录前言一、纹理环绕方式二、 设置纹理参数三、 绘制代码前言纹理如果比较小, 填充比较大的图如何解决?一、纹理环绕方式环绕方式描述GL_REPEAT默认行为,重复纹理图案GL_MIRRORED_REPEAT重复图案,但是每次都镜像GL_CLAMP_TO_EDGE边缘拉伸GL_CLAMP_TO_BORDER添加边界二、 设置纹理参数glTexParameteriglTexParameteri(GL_TEXTURE_2D,GL_TEXTU转载 2022-02-04 11:34:44 · 132 阅读 · 0 评论 -
4-1 线性代数
目录前言一 、公式图解: 点乘 叉乘二 、点乘 算角度三、叉乘 算垂向前言点乘 =>单位向量运算, 得到角度叉乘=>单位向量运算,得到新坐标系一 、公式图解: 点乘 叉乘点乘算值文字描述: 项按位直接乘,再相加 = 数字叉乘算值[上图演示计算第三行]文字描述: 求结果的第几行,就把左边式子的对应行先去除,其余行斜着乘,再相减. = 得到新向量二 、点乘 算角度单位向量的点乘,目的是角度应用公式说明一般向量v · w = /v转载 2022-02-04 14:07:26 · 134 阅读 · 0 评论 -
4-2 矩阵
目录前言一 矩阵的加/减/数乘二 矩阵相乘三 单位矩阵和向量计算前言一 矩阵的加/减/数乘二 矩阵相乘M×N矩阵 乘以 N×K 矩阵 得到 M×K矩阵只有当做矩阵的列数和右侧矩阵的行数相等时才可以矩阵相乘结果:相当于消掉相互挨近的N了演示2×2 和 2×2 矩阵相乘 = 2×2 矩阵演示a23 如何计算三 单位矩阵和向量计算1.向量一般是列向量2.矩阵与列向量相乘3.列向量其实就是一个 N×1的矩阵4.列向量的前三个是坐标 ,最后一个是齐次坐标左边矩阵 = 单位矩阵转载 2022-02-04 14:25:20 · 430 阅读 · 0 评论