后来的OpenGL规范 - 超过着色器?

Pri*_*ime 3 opengl shader specifications

我几乎完全按照2规范编写OpenGL,并且对3和4规格知之甚少.我在一些论坛上看到,OpenGL的后期规范基本上只是为着色器提供数据,这些都是真正的工作.这与我理解的OpenGL形成鲜明对比,而着色器作为照明,水和其他效果等辅助工具,充其量只是对着色器的基本理解,并且不会被证明是错误的在任何前面提到的主题中.我只是想要获得更多的理解

谢谢

Jay*_*rod 6

你的理解是正确的.在OpenGL 3.0中,几乎所有固定功能都被弃用,转而使用着色器.即使是可从着色器访问的内置东西也不推荐使用,例如模型视图/投影矩阵,顶点坐标,法线,灯光等.

基本工作流程应该如下:

  • 通过VBO加载几何和每顶点属性
  • 加载纹理,着色器
  • 通过制服传递像矩阵,灯光到着色器的东西
  • 通过通用属性数组(在VBOs中)传递每个顶点值,如顶点坐标,纹理坐标,法线
  • 打电话glDrawElementsglDrawArrays

因此,您将要进行的大多数OpenGL调用只是推送通用数据.而不是类似的状态函数glLightfv,你将调用泛型函数,如glUniform4f.