浏览代码

feat: 添加代码示例

nicetry12138 1 年之前
父节点
当前提交
1d7562238c
共有 1 个文件被更改,包括 26 次插入0 次删除
  1. 26 0
      图形学/OpenGL学习/README.md

+ 26 - 0
图形学/OpenGL学习/README.md

@@ -1120,3 +1120,29 @@ private:
 
 什么时候清理调用 `glClear`、`glDrawElements` 等函数,这些其实都是渲染器来处理的
 
+不过这里出现一个问题,那就是目前的代码结构使得着色器放在 Render 中不能够方便的设置 `uniform`
+
+不过一般来说也不会由 `Render` 来设置 `uniform`,一般使用材质
+
+在计算机图形学中,特别是在游戏开发和3D建模领域,材质(Material) 和 着色器(Shader) 是两个基本但不同的概念。它们共同作用于3D模型,用以定义对象的外观,但它们的功能和定义有所不同。
+
+- 材质(Material): 材质是定义物体表面外观的资源,它包括颜色、纹理、光泽度、透明度等属性。在3D图形软件和游戏引擎中,通过调整这些属性,可以模拟各种物理材料的外观,如金属、木材、玻璃等。材质通常包括以下元素:
+  - 纹理贴图:图像文件,用于为模型添加详细的表面纹理
+  - 颜色:定义材质的基本颜色
+  - 光学属性:如光泽度、金属感、粗糙度等,这些决定了材料与光互动的方式
+
+
+材质是一个更高层次的概念,它使用多种属性和纹理来定义物体的视觉效果。一个材质可以使用一个或多个着色器来实现其视觉效果的技术细节。着色器是实现这些效果的底层工具,包含执行在GPU上运行的代码。材质依赖着色器来正确渲染,但着色器本身可以在不同的材质中重复使用,以实现不同的视觉效果
+
+在实际应用中,通常会首先创建着色器来定义如何渲染物体,然后创建材质来指定使用哪些着色器及其具体的参数设置,如纹理贴图、颜色等,从而达到预期的视觉表现。这种分工使得材质和着色器各自可以独立更新和重用,提高开发效率和灵活性
+
+```cpp
+class Renderer
+{
+public:
+	void Draw(const VertexArray& va, const IndexBuffer& ib, const Shader& shader) const;
+	void Clear() const;
+private:
+
+};
+```