gpt4 book ai didi

java - LWJGL glDrawElements(int, int, int, long) 不绘制任何内容,而 glDrawElements(int, IntBuffer) 正确绘制

转载 作者:行者123 更新时间:2023-12-02 05:51:36 33 4
gpt4 key购买 nike

我上周开始使用 OpenGL 3.3+,在尝试让索引绘图工作时遇到了这个问题。现在,我只是尝试使用 IBO 绘制一个三角形。

索引缓冲区和indexHandle:

int[] tIndices = {
0, 1, 2
};

IntBuffer indexBuffer = BufferUtils.createIntBuffer(tIndices.length);
indexBuffer.put(tIndices);
indexBuffer.flip();

int indexHandle = glGenBuffers();
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, indexHandle);
glBufferData(indexHandle, indexBuffer, GL_STATIC_DRAW);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);

这是我的程序中的主绘图循环,它不绘制任何内容:

while (!Display.isCloseRequested()) {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glUseProgram(programHandle);

glBindVertexArray(vaoHandle);
glEnableVertexAttribArray(0);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, indexHandle);

// This call does nothing v
glDrawElements(GL_TRIANGLE_STRIP, tIndices.length, GL_UNSIGNED_INT, 0);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
glDisableVertexAttribArray(0);

glBindVertexArray(0);

glUseProgram(0);
Display.update();
}

这是带有 glDrawElements(int, IntBuffer) 变体的主循环(它确实绘制了我的三角形):

while (!Display.isCloseRequested()) {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glUseProgram(programHandle);

glBindVertexArray(vaoHandle);

glEnableVertexAttribArray(0);

// indexBuffer is an IntBuffer
glDrawElements(GL_TRIANGLES, indexBuffer);
glDisableVertexAttribArray(0);

glBindVertexArray(0);

glUseProgram(0);
Display.update();
}

有人可以向我解释为什么第一个 block 根本没有绘制任何东西吗?我做错了什么?

此外,第二个 block 在 600x600 窗口上的运行速度约为 1.3k FPS,而第一个 block 的运行速度约为 800 FPS。这是为什么?

如果有人需要的话,我会在早上提供更多信息

最佳答案

对于索引缓冲区,glBufferData() 的第一个参数是错误的。你有这个:

glBufferData(indexHandle, indexBuffer, GL_STATIC_DRAW);

第一个参数是目标,而不是缓冲区 ID。它应该看起来像这样:

glBufferData(GL_ELEMENT_ARRAY_BUFFER, indexBuffer, GL_STATIC_DRAW);

关于java - LWJGL glDrawElements(int, int, int, long) 不绘制任何内容,而 glDrawElements(int, IntBuffer) 正确绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23486563/

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