LWJGL3:重载的 glBufferData 方法

2024-05-25

我正在使用 LWJGL 调用 OpenGL 函数。

方法org.lwjgl.opengl.GL15#glBufferData() http://javadoc.lwjgl.org/org/lwjgl/opengl/GL15.html#glBufferData-int-java.nio.FloatBuffer-int-调用等价的OpenGL方法 https://www.opengl.org/sdk/docs/man/html/glBufferData.xhtml。 它在 LWJGL 中有几个重载变体,我见过的最常用的是FloatBuffer,像这样一个简单的三角形(省略其他不相关的 OpenGL 调用):

float[] triangle = new float[]{
    0.0f,  0.5f, 0.0f,
    -0.5f, -0.5f, 0.0f,
    0.5f,  -0.5f, 0.0f
};

FloatBuffer buf = BufferUtils.createFloatBuffer(triangle.length);
buf.put(triangle).flip();

int vbo = glGenBuffers();
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glBufferData(GL_ARRAY_BUFFER, buf, GL_STATIC_DRAW);

但也有直接采用数组的变体,例如float[] 作为数据。由于我从未在任何在线代码示例中看到过它,我想知道它是否因任何原因而被阻止?


方法的使用。用数组而不是*Buffer不是灰心。 您可能无法在网上找到它们的用法示例因为它们是最近才添加的。

AFAIK 使用这些方法没有任何问题,execpt他们可能比那些慢一点*Buffer因为数组(及其数据)位于头部。这是否是一个实际的性能问题是有争议的,只能通过以下方式来确定:分析具体情况.

所以只要使用更舒服的东西you.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LWJGL3:重载的 glBufferData 方法 的相关文章

随机推荐