标签: OpenGL

9 篇文章

thumbnail
OpenGL – 矩阵操作组合
在进行矩阵操作的时候我们通常先进行缩放在进行平移,因为如果你先进行平移,你平移的量也会被缩放,这在很多情况下是反直觉的。 而又因为事实上矩阵相乘并不满足乘法交换律,所以我们将两个矩阵组合的时候一定要注意,顺序。最后进行的组合操作,在应用矩阵变化的时候最先进行。比如: T r a n s . S c a l e = [ 1 0 0 1 0 1 0 2…
OpenGL – 为什么要使用4维矩阵和向量
除了颜色等需要传递四个参数的情景之外,传递四维矩阵更多是为了进行位移(Translation)的操作。 [ 1 0 0 T x 0 1 0 T y 0 0 1 T z 0 0 0 1 ] ⋅ ( x y z 1 ) = ( x + T x y + T y z + T z 1 ) 进行矩阵相乘的时候w方向上的分量都会乘以向量上的1,以此…
OpenGL材质渲染给定材质坐标的原因
在OpenGL中,我们需要用layout布局(glVertexArrayAttribPointer)来传入要使用的材质坐标。这是因为材质坐标有四个顶点而不是一个,并且我们需要通过VertexShader向FragmentShader传递坐标来实现一个自动插值,所以我们必须通过几个矩形的顶点对应传入材质的坐标
002_GLSL的坑
glVertexAttribPointer(0, 3, GL_FLOAT, false, 3 * sizeof(GLfloat), (void*)0); 第二个参数代表的是一个顶点的维度,而不是你有几个顶点 glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0); 第二个参数代表的是你要绘制多少个顶点…
Qt OpenGL 学习笔记 – 3
006. GLSL 初步认识 in out fragment shader和 vertex shader的变量是可以对接的,比如: 在vertex shader里你定义了: out vec4 color1; 就代表你要输出一个vec4类型的变量,要在fragment shader中接收它你只需要: in vec4 color1; 但是要注意保持变量…
Qt OpenGL学习笔记 – 2
开头 废话不多说,该说的在学习笔记1中已经说明。这篇文章会继续简单认识OpenGL里的一些东西。之前的Demo没有编号,所以从这里开始小标题前面的编号也就对应github上面的project代码 github链接:https://github.com/OnlyCharSaMa/Qt-OpenGL-Demos/tree/main 001.编译链接着色…
Qt OpenGL 学习笔记 – 1
Why OpenGL Q: 为什么要使用OpenGL呢,用QPainter不好吗,在QOpenGLWidget里QPainter还可以有GPU加速呢。 A(ChatGPT): QPainter在QOpenGLWidget中确实可以使用GPU来加速渲染,但是它的性能可能不如直接使用OpenGL。因为QPainter在绘制时会经过多个抽象层,涉及到更多…