好吧,我一直在通过本教程学习 openGL:opengl-tutorial.org。该教程没有解释着色器是如何工作的。我的意思是,顶点着色器是在片段着色器之前读取的吗?
好的说到这个问题,我想创建两个对象来练习,一个盒子(带纹理的3D正方形)和一个金字塔(带纹理的3D三角形),我不知道怎么做,我知道怎么画它使用 C++/OpenGl 但谈论 GLSL.... 我需要创建另一个程序吗?我怎样才能做到这一点?
(OpenGL 3.3)
OpenGL 不会以您似乎假设的方式维护“对象”(术语对象用于指代 OpenGL 使用的内部“东西”,您可以通过标识符来引用它。顶点缓冲区、纹理或着色器都是“对象”的示例)。OpenGL 不是场景图。
您需要为应用程序中的每个对象创建顶点数据(或从文件中加载该数据),并通过向缓冲区对象提供该数据来为 OpenGL 提供该数据。
然后你告诉 OpenGL 从那个缓冲区中绘制一些顶点。OpenGL 不关心该数据是什么或如何绘制它。它只会做你告诉它做的事情。如果你告诉它“获取包含顶点坐标的数据块,现在绘制 5 个三角形”,那么它就会这样做。