简单的多维数据集纹理不显示

时间:2020-01-09 17:16:02

标签: java opengl

我正在使用lvjgl和lvjgui开发程序。尝试显示2D纹理时没有问题,但是当我尝试显示3D立方体时,不会显示所有纹理。这是渲染代码:

@Override
public void render(Context context) {
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
   // glClearColor(0.0f, 0.0f, 0.0f, 0.5f);
    glBegin(GL_QUADS);
    glColor3f(0f, 0f, 1f);
    glVertex3f(0.5f, 0.5f, 0.5f);
    glVertex3f(-0.5f, 0.5f, 0.5f);
    glVertex3f(-0.5f, -0.5f, 0.5f);
    glVertex3f(0.5f, -0.5f, 0.5f);

    glColor3f(1, 0, 1);
    glVertex3f(0.5f, -0.5f, 0.5f);
    glVertex3f(-0.5f, -0.5f,0.5f);
    glVertex3f(-0.5f, -0.5f, -0.5f);
    glVertex3f(0.5f, -0.5f, -0.5f);

    glColor3f(0, 1, 1);
    glVertex3f(0.5f, -0.5f, -0.5f);
    glVertex3f(0.5f, -0.5f, 0.5f);
    glVertex3f(0.5f, 0.5f, 0.5f);
    glVertex3f(0.5f, 0.5f, -0.5f);


    glColor3f(1, 0, 0);
    glVertex3f(0.5f, 0.5f, -0.5f);
    glVertex3f(0.5f, -0.5f, -0.5f);
    glVertex3f(-0.5f, -0.5f, -0.5f);
    glVertex3f(-0.5f, 0.5f, -0.5f);

    glColor3f(1, 1, 0);
    glVertex3f(-0.5f, 0.5f, -0.5f);
    glVertex3f(0.5f, 0.5f, -0.5f);
    glVertex3f(0.5f, 0.5f, 0.5f);
    glVertex3f(-0.5f, 0.5f, 0.5f);

    glColor3f(0, 1, 0);
    glVertex3f(-0.5f, 0.5f, 0.5f);
    glVertex3f(-0.5f, -0.5f, 0.5f);
    glVertex3f(-0.5f, -0.5f, -0.5f);
    glVertex3f(-0.5f, 0.5f, -0.5f);

    glEnd();
    if(rotate)
        glRotatef(0.01f,0.0f,0.5f,0.0f);

}

渲染之前,将执行以下操作:

public RenderingCallback() {
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    glClearColor(0.0f, 0.0f, 0.0f, 0.5f);
    glClearDepth(0.5f);
    glDepthFunc(GL_LEQUAL);
    glEnable(GL_DEPTH_TEST);
    glShadeModel(GL_SMOOTH);
    glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
    glRotatef(20f,0.5f,0.0f,0.0f);
}

多维数据集本身如下所示: Cube

还有video

如您所见,蓝色根本不显示,并且某些纹理相互重叠。如果卸下其中一面,则会出现蓝色的一面。我怎么解决这个问题?我在做什么错了?

2 个答案:

答案 0 :(得分:1)

您缺少深度缓冲区。在LWJGL初始化中,在调用glfwCreateWindow之前,请提供深度缓冲区的大小:

glfwWindowHint(GLFW_DEPTH_BITS, 16);

您还应该将深度清除为1.0而不是0.5:

glClearDepth(1.0f);

答案 1 :(得分:1)

Tnx全部寻求帮助,@ ybungalobill提供解决方案。 我添加

glEnable(GL_DEPTH_TEST);

render(Context context)中无效且问题已解决

相关问题