我被要求绘制一个 3D 四面体并使其围绕 x、y 或 z 轴旋转,具体取决于输入给定。现在我有2个问题。
1)我使用 GL_TRIANGLES(4 个三角形)绘制了我的四面体。这是绘制将要转换的图元的更好方法吗?
2)我相信(从我看到的其他问题)轴旋转是关于平移到特定轴,例如(0,-y,-z),然后围绕该轴旋转并最终平移回来。好的,现在翻译的价值应该是什么?y,z?我有很多代表每个顶点的值,我要翻译它们吗?
我认为写完整的答案比问很多问题要快:
为了减轻和加快速度,请使用GL_TRIANGLE_FAN
or GL_TRIANGLE_STRIP
代替。
取决于您使用的管道:
2.1旧 OpenGL(< 2.0,无着色器)
您不应该手动平移和旋转它们。使用适当glRotate
的和glTranslate
功能。您需要传递给这些函数的值显然与对象的所需位置和旋转有关;您将在文档中找到有关它们的更多信息。
2.2可编程流水线
创建一个转换矩阵(您自己或使用 GLM 等库)并将其作为统一传递给顶点着色器。
哦,你不会翻译成轴。您将当前视图矩阵乘以适当的旋转矩阵。
在深入研究更复杂的主题之前,您应该尝试阅读更多内容。本教程很好地涵盖了现代 OpenGL;如果您被迫使用旧的 OpenGL,请查看NeHe 教程。