【发布时间】:2013-07-01 18:57:44
【问题描述】:
好的,所以我试图通过绘制 6 个面来绘制一个立方体。
我通过给它两个向量来定义立方体本身的每个面。如下:
但是,现在我在如何在 openGL 中绘制这些面孔时遇到了麻烦(请注意,我使用的是 LWJGL,它是基于 openGL 构建的 java 库)。
我试图画出上述面孔,但我相信我有一个小错误,我似乎无法正确。目前,我尝试按如下方式绘制人脸:
public void render() {
GL11.glBegin(GL11.GL_QUADS);
GL11.glVertex3f(v2.x, v1.y, v1.z);
GL11.glVertex3f(v1.x, v1.y, v1.z);
GL11.glVertex3f(v1.x, v2.y, v2.z);
GL11.glVertex3f(v2.x, v2.y, v2.z);
GL11.glEnd();
}
但这里似乎只有顶面和底面被正确绘制,而侧面(左/右)甚至不可见。
如何正确绘制这些?
【问题讨论】:
-
如果你能澄清一些关于你的代码的事情会有所帮助。由于立方体的每个面都需要 4 个顶点来制作该面的四边形,我假设您的渲染函数只绘制立方体的一个面,对吗?您对 Vector 的定义也有点令人困惑。传统上,您会认为向量具有 X、Y、Z 位置以及 X、Y 和 Z 方向的幅度。您的向量中似乎只有 3 个字段,这些字段应该是您的向量的大小或位置吗?
-
澄清一下——是的,每一张脸都是使用我指定的渲染方法绘制的。这里的每个向量都是一个简单的 Vector3f 对象,它有一个 X、Y 和 Z 位置。
-
我相信 Vector3f 类的 X、Y 和 Z 分量并不打算用作向量的大小,而不是向量的起始位置。如果您将它们纯粹用作存储类而不利用类中的其他功能,那么这可能没什么大不了的。您需要考虑两个向量的起始点(参见下面的 a.lasram 帖子)。