繁体   English   中英

给定两个向量在opengl中绘制3d平面

[英]Drawing a 3d plane in opengl given two vectors

好的,所以我试图通过绘制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();
}

但是在这里看来,只有顶面和底面可以正确绘制,而侧面(左/右)甚至都不可见。

如何正确绘制这些?

2个向量定义了平行面的无穷大。 除非X = (0,0,0) ,否则您需要一个额外的点X来选择其中的一个,这就是为什么它不显示在代码中的原因。

如果V1V2定义了从参考点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();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM