好的,所以我试图通过绘制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();
}
但似乎在这里,只有顶面和底面被正确绘制,而侧面(左/右)面甚至都不可见。
我该如何正确地绘制这些?
答案 0 :(得分:2)
2个矢量定义了平行面的无穷大。您需要额外的一个点X
来选择其中一个,除非您X = (0,0,0)
,这就是为什么它没有显示在您的代码中。
如果V1
和V2
定义从参考点X
开始的脸部两侧的长度和方向,则可以绘制四边形
GL11.glBegin(GL11.GL_QUADS);
GL11.glVertex3f(X.x, X.y, X.z);
GL11.glVertex3f(X.x+v1.x, X.y+v1.y, X.z+v1.z);
GL11.glVertex3f(X.x+v1.x+v2.x, X.y+v1.y+v2.y, X.z+v1.z+v2.z);
GL11.glVertex3f(X.x+v2.x, X.y+v2.y, X.z+v2.z);
GL11.glEnd();