Java 不渲染颜色lwjgl体素引擎

Java 不渲染颜色lwjgl体素引擎,java,opengl,lwjgl,Java,Opengl,Lwjgl,我正在使用java和lwjgl编写一个基于opengl的体素引擎体素引擎。我遵循并尝试将其渲染方法更新为现代opengl,以便使用着色器。当我将glVertexPointer转换为GLVERTEXAttributePointer时,它正确地显示了所有顶点,但当我为glTexCoordPointer执行此操作时,颜色停止显示 下面是块的两种呈现方法(来自更新的和旧的) 这里是将日期加载到VAO/VBOs的部分(两种情况下的数据相同,因此我认为不需要添加它,但如果需要,我会添加): 如果有人能找出为

我正在使用java和lwjgl编写一个基于opengl的体素引擎体素引擎。我遵循并尝试将其渲染方法更新为现代opengl,以便使用着色器。当我将glVertexPointer转换为GLVERTEXAttributePointer时,它正确地显示了所有顶点,但当我为glTexCoordPointer执行此操作时,颜色停止显示

下面是块的两种呈现方法(来自更新的和旧的)

这里是将日期加载到VAO/VBOs的部分(两种情况下的数据相同,因此我认为不需要添加它,但如果需要,我会添加):


如果有人能找出为什么渲染顶点但不应用颜色,我会非常感谢,提前感谢

您的代码中是否有任何东西可以确保位置0和1与着色器代码中的位置和颜色相对应?@RetoKoradi我还没有编写着色器代码,只需添加对它的支持,可以吗?是的。现在使用的通用顶点属性仅适用于着色器。只要您使用固定管道,
glVertexPointer()
glColorPointer()
都是正确的调用。@RetoKoradi ok谢谢,我不知道
public void Render() { //updated render method 
        GL30.glBindVertexArray(VAOHandle);
        GL20.glEnableVertexAttribArray(0);
        GL20.glEnableVertexAttribArray(1);
        GL11.glDrawArrays(GL11.GL_QUADS, 0, CHUNK_SIZE * CHUNK_SIZE
                    * CHUNK_SIZE * 24);
        GL20.glDisableVertexAttribArray(1);
        GL20.glDisableVertexAttribArray(0);
        GL30.glBindVertexArray(0);
}

public void Render() {  //old render method 
        GL11.glPushMatrix();
        GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, VBOVertexHandle);
        GL11.glVertexPointer(3, GL11.GL_FLOAT, 0, 0L);
        GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, VBOColorHandle);
        GL11.glColorPointer(3, GL11.GL_FLOAT, 0, 0L);
        GL11.glDrawArrays(GL11.GL_QUADS, 0, CHUNK_SIZE * CHUNK_SIZE
                * CHUNK_SIZE * 24);

        GL11.glPopMatrix();
}
// updated method
VAOHandle =  GL30.glGenVertexArrays();
GL30.glBindVertexArray(vaoID);
VBOColorHandle = GL15.glGenBuffers();
VBOVertexHandle = GL15.glGenBuffers();

GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, VBOVertexHandle);
GL15.glBufferData(GL15.GL_ARRAY_BUFFER, VertexPositionData,
                GL15.GL_STATIC_DRAW);
GL20.glVertexAttribPointer(0, 3, GL11.GL_FLOAT, false, 0, 0);
GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, VBOColorHandle);
GL15.glBufferData(GL15.GL_ARRAY_BUFFER, VertexColorData, GL15.GL_STATIC_DRAW);
GL20.glVertexAttribPointer(1, 3, GL11.GL_FLOAT, false, 0, 0);
GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);
GL30.glBindVertexArray(0);

// old method
VBOColorHandle = GL15.glGenBuffers();
VBOVertexHandle = GL15.glGenBuffers();

GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, VBOVertexHandle);
GL15.glBufferData(GL15.GL_ARRAY_BUFFER, VertexPositionData,
        GL15.GL_STATIC_DRAW);
GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);
GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, VBOColorHandle);
GL15.glBufferData(GL15.GL_ARRAY_BUFFER, VertexColorData,
        GL15.GL_STATIC_DRAW);
GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);