gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 06:39:16 24 4
gpt4 key购买 nike

要事第一

我对 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com