《Qt-OpenGL系列编程》课程学习记录
文章平均质量分 54
买的网课,记录学习过程。
友善啊,朋友
这个作者很懒,什么都没留下…
展开
-
《Qt-OpenGL系列编程》课程学习记录(12):光照纹理贴图
总结一下上一节的内容:物体呈现的颜色与以下因素有关:物体的材质 环境光 物体对光源照射的光的漫反射 物体对光源照射的光的镜面反射 光源照射的光的颜色 照射的角度现实中的物体多半不是由单一的材料组成的,所以物体的材质是复杂的。下面使用两张图片作为纹理,根据纹理坐标从图片获取像素代替材质的值来参与计算观察效果。从左边的图获取像素参与计算环境光和漫反射。从右边的图获取像素参与计算镜面反射。从图片看中间的材料是木材,四周的是金属材料。右边的图中间是黑色就认为木材对镜面反射没有反应原创 2022-05-30 15:36:33 · 456 阅读 · 0 评论 -
《Qt-OpenGL系列编程》课程学习记录(11):材质
材质的概念材料的质感。材质来自于不同物体对光的反应不同。上一篇所说的环境光、漫反射光、镜面反射光对物体的反应都是不同的。一般物体的材质是确定的,不用程序员写。在片段着色器里,用一个表示材质颜色的具有四个分量的结构体代替物体颜色:#version 450 coreout vec4 FragColor;in vec3 Normal;//法向量in vec3 FragPos;//顶点struct Material//物体材质{ vec3 ambient;原创 2022-05-28 11:18:25 · 378 阅读 · 3 评论 -
《Qt-OpenGL系列编程》课程学习记录(10):冯氏光照模型
冯氏光照模型的3个主要结构环境光(Ambient Lighting)用于综合那些细微的不易于处理的“小光照”,将它们的影响合计为一个环境光照常量,因此物体在没有主光源的情况下也存在一些颜色。漫反射光(Diffuse Lighting)模拟物体对光源的漫反射。物体的某一部分越是正对着(越接近90°)光源,就越亮;越是在侧面(越是解决0°)就越暗。镜面光照(Specular Lighting)模拟物体对光源的镜面反射。镜面光照的颜色相比于物体的颜色会更倾向于光的颜色。原创 2022-05-26 13:03:50 · 354 阅读 · 0 评论 -
《Qt-OpenGL系列编程》课程学习记录(9):光照的概念、添加一个图形作为光源
光照现实中看到物体的颜色并不是这个物体真正拥有的颜色,而是它所反射的光的颜色。实际呈现的颜色是光源的颜色与物体颜色的分量对应相乘的结果。QVector3D lightColor(1.0f, 1.0f, 1.0f);//光源颜色QVector3D toyColor(1.0f, 0.5f, 0.31f);//物体颜色QVector3D result = lightColor * toyColor;//=(1.0f, 0.5f, 0.31f);下面的代码添加一个图形作为光源。效果图:原创 2022-05-24 13:30:13 · 340 阅读 · 0 评论 -
《Qt-OpenGL系列编程》课程学习记录(8):绘制一个长方体
要绘制一个长方体,每一面都是图片。为了简便,就不使用EBO了。前面的内容是绘制一个面的,但是长方体有六个面。其实方法也是一样的,根据这个图设置坐标:float vertices[] ={ //位置坐标 纹理坐标 -0.5f, -0.5f, -0.5f, 0.0f, 0.0f, 0.5f, -0.5f, -0.5f, 1.0f, 0.0f, 0.5f, 0.5f, -0.5f, 1.0f, 1.0f,原创 2022-05-22 23:58:28 · 1202 阅读 · 1 评论 -
《Qt-OpenGL系列编程》课程学习记录(7):变换
Qt 封装了变换矩阵为 QMatrix4x4 类,类似于二维的 QTransform。//顶点着色器#version 450 corelayout(location = 0) in vec3 aPos;layout(location = 1) in vec3 aColor;layout(location = 2) in vec2 aTexCord;out vec3 ourColor;out vec2 TexCord;uniform mat4 theMatrix;//4维变换矩阵void原创 2022-05-22 16:51:50 · 313 阅读 · 0 评论 -
《Qt-OpenGL系列编程》课程学习记录(6):纹理单元、纹理环绕方式、纹理过滤
纹理单元OpenGL保证至少有16个纹理单元,即可以激活从 GL_TEXTURE0 (默认是激活的)到 GL_TEXTRUE15。它们都是按顺序定义的。激活和绑定纹理单元OpenGL原生:glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D, texture1);Qt封装:QOpenGLTexture * texture = new QOpenGLTexture(QImage(":/images/images/w原创 2022-05-21 22:48:58 · 514 阅读 · 1 评论 -
《Qt-OpenGL系列编程》课程学习记录(5):纹理的概念
纹理像素纹理像素不同于屏幕像素,比如一张100*100的图片,纹理像素是100*100,放大后图片在屏幕显示的尺寸变大了,纹理像素不变。纹理坐标上面的图片用做纹理贴图时,纹理坐标定义了顶点的对应关系。上面的位置坐标和纹理坐标确定图像和要绘制的内容的映射关系。...原创 2022-05-21 19:27:59 · 425 阅读 · 0 评论 -
《Qt-OpenGL系列编程》课程学习记录(4):OpenGL着色器语言(GLSL)
in 关键字定义的变量in type in_variable_name; 表明此变量来自OpenGL管线。当前要定义一个变量保存它的值。out 关键字定义的变量out type out_variable_name; 表明此变量是要传到别的着色器的变量。uniform 关键字定义的变量uniform type uniform_name; 表明是可以由CPU和GPU都可以访问的变量。顶点属性数量限制OpenGL确保至少有16个包含4分量的顶点属性可用,原创 2022-05-21 16:49:04 · 867 阅读 · 0 评论 -
《Qt-OpenGL系列编程》课程学习记录(3):2道简单的练习题
1、通过添加更多的顶点数据,使用glDrawArrays()绘制两个挨在一起的三角形#include "widget.h"Widget::Widget(QWidget *parent) : QOpenGLWidget(parent){}Widget::~Widget(){}unsigned int VBO, VAO, EBO;unsigned int shaderProgram;float vertices[] ={ -0.5f,0.5f, 0.0f,原创 2022-05-19 00:19:57 · 359 阅读 · 0 评论 -
《Qt-OpenGL系列编程》课程学习记录(2):EBO、索引数组、使用QOpenGLShaderProgram
绘制一个矩形使用上一节的代码,改一下顶点数据,使用六个点即两个三角形绘制一个矩形:#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include <QOpenGLWidget>#include <QOpenGLFunctions_4_5_Core>class Widget : public QOpenGLWidget,QOpenGLFunctions_4_5_Core{ Q_OBJEC原创 2022-05-18 22:44:35 · 898 阅读 · 0 评论 -
《Qt-OpenGL系列编程》课程学习记录(1):相关概念、VAO、VBO、绘制三角形、使用OpenGL原生方式编译链接着色器程序
大家可以去B站看课程的视频支持一下作者哈:OpenGL,Qt实现:1入门篇(已更完)_哔哩哔哩_bilibili课程相关源码、PPT、安装包,完整课程合集(1:入门篇;2:基础光照;3:模型加载;4:高级OpenGL;5:高级光照 ;程序员的数学3:线性代数):https://ke.qq.com/course/package/40726?flowToken=1041265https://www.bilibili.com/video/BV1UL411W71w准备工作1、关于OpenGLOpe原创 2022-05-16 22:53:08 · 1260 阅读 · 1 评论