LearnOpenGL
=====================
欢迎来到图形学!!!
接下来我开始跟着 ``LearnOpenGL`` 教程正式入坑图形学啦~
`LearnOpenGL 中文 `_
Hello Window
*********************
配置部分解决完成的话,运行这个示例代码应该很简单。
代码整体不难理解,都是对各自函数的解释,我们这里就continue了。
`HelloWindow <../_static/图形学/LearnOpenGL/HelloWindow.html>`_
.. image:: ../_static/图形学/LearnOpenGL/HelloWindow.png
:alt: Hello Window
:align: center
Hello Triangle
********************
说实话,有点上强度了,不过读好几遍代码终于搞懂了。
编译着色器和链接部分比葫芦画瓢就行。
VAO,VBO,EBO,的理解就十分重要了。
教程本来就是翻译的刚开始有点看不懂,复制一些代码让GPT解释了一下才勉强理解了它们的概念。
简单来讲,你每一次让GPU绘制的任务都应该由VAO,VBO,EBO组合,当然EBO可以不需要。
组合的时候就照抄给的代码就行。VAO存储的是你对该任务的各种配置,VBO就啥都不管仅仅存储顶点的数据就行了,EBO存到就是你任务里的每个个体都是由VBO的那几个顶点组成的。
刚开始要给它们绑定到一块,代表它们是一家人了,之后调用这个任务时,就只找它们家长VAO就行了。
对于绑定的代码部分也可以通俗理解成,我们有一个小屋,刚开始人们都不在屋里,所以要把人们叫过来,到一个屋子里就是一家人了。
绑定0意味着,让这个家庭的某个职位的成员滚蛋。
`HelloTriangle <../_static/图形学/LearnOpenGL/HelloTriangle.html>`_
.. image:: ../_static/图形学/LearnOpenGL/HelloTriangle1.png
:alt: Hello Triangle1
:align: center
.. image:: ../_static/图形学/LearnOpenGL/HelloTriangle2.png
:alt: Hello Triangle2
:align: center
#. `HelloTriangle_homework1 <../_static/图形学/LearnOpenGL/HelloTriangle_homework1.html>`_
#. `HelloTriangle_homework2 <../_static/图形学/LearnOpenGL/HelloTriangle_homework2.html>`_
#. `HelloTriangle_homework3 <../_static/图形学/LearnOpenGL/HelloTriangle_homework3.html>`_
Shaders
****************
这一节难度较低,开始教了一部分`GLSL`的用法,接下来展示了如何让程序调用函数来与着色器交互。
之后就更简单了,封装一个着色器类便于使用,毕竟着色器编译链接部分很板。
`Shaders1 <../_static/图形学/LearnOpenGL/Shaders1.html>`_
.. image:: ../_static/图形学/LearnOpenGL/Shaders1.png
:alt: Shaders1
:align: center
`Shaders2 <../_static/图形学/LearnOpenGL/Shaders2.html>`_
.. image:: ../_static/图形学/LearnOpenGL/Shaders2.png
:alt: Shaders2
:align: center
`Shaders3 <../_static/图形学/LearnOpenGL/Shaders3.html>`_
`Shaders4 <../_static/图形学/LearnOpenGL/Shaders4.html>`_
.. image:: ../_static/图形学/LearnOpenGL/Shaders34.png
:alt: Shaders34
:align: center
#. `Shaders_homework1 <../_static/图形学/LearnOpenGL/Shaders_homework1.html>`_
#. `Shaders_homework2 <../_static/图形学/LearnOpenGL/Shaders_homework2.html>`_
#. `Shaders_homework3 <../_static/图形学/LearnOpenGL/Shaders_homework3.html>`_
Textures
***************
代码实际运行效果不是下方图片哦。
我自己改了一部分代码,教程的图片好难看(⊙﹏⊙),还是我的流萤好看。
`Textures1 <../_static/图形学/LearnOpenGL/Textures1.html>`_
`Textures2 <../_static/图形学/LearnOpenGL/Textures2.html>`_
.. image:: ../_static/图形学/LearnOpenGL/Textures_流萤.png
:alt: Textures_流萤
:align: center
`原画链接 <../_static/图形学/LearnOpenGL/流萤.jpg>`_
#. `Textures_homework1 <../_static/图形学/LearnOpenGL/Textures_homework1.html>`_
#. `Textures_homework2 <../_static/图形学/LearnOpenGL/Textures_homework2.html>`_
#. `Textures_homework3 <../_static/图形学/LearnOpenGL/Textures_homework3.html>`_
#. `Textures_homework4 <../_static/图形学/LearnOpenGL/Textures_homework3.html>`_
Transformations
**************************
这一节讲了不少线性代数的知识。
有一说一,我不是很喜欢,但没办法还得学。
作业我没怎么看,之后用到再翻找吧。。。
`Transformations <../_static/图形学/LearnOpenGL/Transformations.html>`_
.. image:: ../_static/图形学/LearnOpenGL/Transformations.png
:alt: Transformations
:align: center
#. `Transformations_homework1 <../_static/图形学/LearnOpenGL/Transformations_homework1.html>`_
#. `Transformations_homework2 <../_static/图形学/LearnOpenGL/Transformations_homework2.html>`_
Coordinate Systems
**************************
这一个个系数矩阵有点迷糊呀,当然我是指具体实现方面。
它们各自的功能还是很好理解的。
.. math::
V_{clip} = M_{projection} \cdot M_{view} \cdot M_{model} \cdot V_{local}
`CoordinateSystems1 <../_static/图形学/LearnOpenGL/CoordinateSystems1.html>`_
.. image:: ../_static/图形学/LearnOpenGL/CoordinateSystems1.png
:alt: Coordinate Systems1
:align: center
`CoordinateSystems2 <../_static/图形学/LearnOpenGL/CoordinateSystems2.html>`_
.. image:: ../_static/图形学/LearnOpenGL/CoordinateSystems2.png
:alt: Coordinate Systems2
:align: center
`CoordinateSystems3 <../_static/图形学/LearnOpenGL/CoordinateSystems3.html>`_
.. image:: ../_static/图形学/LearnOpenGL/CoordinateSystems3.png
:alt: Coordinate Systems3
:align: center
#. `CoordinateSystems_homework <../_static/图形学/LearnOpenGL/CoordinateSystems_homework.html>`_
Camera
*****************
逻辑不难理解,所以代码直接跳到最后一部分了。
`Camera <../_static/图形学/LearnOpenGL/Camera.html>`_
`Camera_class <../_static/图形学/LearnOpenGL/Camera_class.html>`_
`Camera_useclass <../_static/图形学/LearnOpenGL/Camera_useclass.html>`_
#. `Camera_homework1 <../_static/图形学/LearnOpenGL/Camera_homework1.html>`_
#. `Camera_homework2 <../_static/图形学/LearnOpenGL/Camera_homework2.html>`_
Review
***************************
`教程链接 `_