java - 尝试 3D 立方体时出现奇怪的线条

标签 java opengl lwjgl

要事第一

我对 OpenGL 和游戏开发非常陌生。也许我会错过一些重要的代码或者在我的代码中做了一些糟糕的事情。请随时在评论中询问更多信息。

问题

我尝试绘制一个由单线组成的 3D 立方体。它按预期工作,但出现了奇怪行。
奇怪线从0,0,1移动到1,1,0

我用不同的(纯色)颜色给线条上色。 奇怪的线有一个渐变。

wild line appears apparently

好的,是时候编写一些代码了

由于代码很多,我将尝试发布最少的代码。正如我之前所说,请随时提出更多要求。

绘制我的立方体的方法

private void drawBlock(Position pos) {
    int x = pos.x, y = pos.y, z = pos.z;

    GL11.glBegin(GL11.GL_LINE_STRIP);

    GL11.glColor4f(1, 1, 1, 1);
    // 0,0,0 -> 5,0,0
    GL11.glVertex3i(x, y, z);
    GL11.glVertex3i(x + blockSize, y, z);

    // 0,0,0 -> 0,5,0
    GL11.glVertex3i(x, y, z);
    GL11.glVertex3i(x, y + blockSize, z);

    // 0,0,0 -> 0,0,5
    GL11.glVertex3i(x, y, z);
    GL11.glVertex3i(x, y, z + blockSize);


    GL11.glColor4f(0.1f, 0.5f, 0.5f, 1);
    // 5,0,5 -> 0,0,5
    GL11.glVertex3i(x + blockSize, y, z + blockSize);
    GL11.glVertex3i(x, y, z + blockSize);

    // 5,0,5 -> 5,5,5
    GL11.glVertex3i(x + blockSize, y, z + blockSize);
    GL11.glVertex3i(x + blockSize, y + blockSize, z + blockSize);

    // 5,0,5 -> 5,0,0
    GL11.glVertex3i(x + blockSize, y, z + blockSize);
    GL11.glVertex3i(x + blockSize, y, z);


    GL11.glColor4f(0.9f, 0.25f, 0.25f, 1);
    // 0,5,5 -> 0,0,5
    GL11.glVertex3i(x, y + blockSize, z + blockSize);
    GL11.glVertex3i(x, y, z + blockSize);

    // 0,5,5 -> 5,5,5
    GL11.glVertex3i(x, y + blockSize, z + blockSize);
    GL11.glVertex3i(x + blockSize, y + blockSize, z + blockSize);

    // 0,5,5 -> 0,5,0
    GL11.glVertex3i(x, y + blockSize, z + blockSize);
    GL11.glVertex3i(x, y + blockSize, z);

    GL11.glColor4f(1, 0.75f, 0, 1);
    // 5,5,0 -> 5,0,0
    GL11.glVertex3i(x + blockSize, y + blockSize, z);
    GL11.glVertex3i(x + blockSize, y, z);

    // 5,5,0 -> 0,5,0
    GL11.glVertex3i(x + blockSize, y + blockSize, z);
    GL11.glVertex3i(x, y + blockSize, z);

    // 5,5,0 -> 5,5,5
    GL11.glVertex3i(x + blockSize, y + blockSize, z);
    GL11.glVertex3i(x + blockSize, y + blockSize, z + blockSize);

    GL11.glEnd();
}

OpenGL初始化

public void init3D() {
    GL11.glMatrixMode(GL11.GL_PROJECTION);
    GL11.glLoadIdentity();

    GLU.gluPerspective((float) 100, width / height, 0.001f, 1000);
    GL11.glMatrixMode(GL11.GL_MODELVIEW);

    GL11.glEnable(GL11.GL_TEXTURE_2D);
    GL11.glShadeModel(GL11.GL_SMOOTH);
    GL11.glClearColor(0.0f, 0.0f, 0.0f, 0.5f);
    GL11.glClearDepth(1.0f);
}

最佳答案

你应该使用GL11.glBegin(GL11.GL_LINES);而不是线条,

line_strip 是连接线的序列,其中序列 P1、P2、P3、P4 给出线 P1-P2、P2-P3、P3-P4 等,而 GL_LINES 仅给出 P1-P2 和 P3-P4

关于java - 尝试 3D 立方体时出现奇怪的线条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24899879/

相关文章:

java - 在java构造函数中传递 “this”

c - 创建库时如何正确初始化GLEW?

c++ - 如何在运行时检测默认 GPU?

java - 如何在 OpenGL 中创建边缘平滑的聚光灯?

java - 外观呈三角形 strip 。表面法线?还是绕组?

java - BeanUtils : populate String Date formatted map field to Date property

java - 如何获取插入NEO4J的最后一个内部ID?

c++ - Debian 上的 GLFW 回调 glfwSetDropCallback 有问题

java - LWJGL 无法编译着色器

java - Android 共享首选项 : String stored has different length than String retrieved?