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