Java LWJGL3:重载的glBufferData方法
我正在使用LWJGL调用OpenGL函数 该方法调用等价项。 它在LWJGL中有几个重载变量,我所见过的最常用的是Java LWJGL3:重载的glBufferData方法,java,opengl,lwjgl,Java,Opengl,Lwjgl,我正在使用LWJGL调用OpenGL函数 该方法调用等价项。 它在LWJGL中有几个重载变量,我所见过的最常用的是FloatBuffer,类似于一个简单三角形(省略了其他无关的OpenGL调用): 但也有一些变体直接使用数组,例如float[]作为数据。由于我从未在任何在线代码示例中看到过这一点,我想知道是否出于任何原因不鼓励使用它?方法的使用。不建议使用数组而不是*缓冲区。 您可能无法在网上找到它们的使用示例,因为它们是最近才添加的 如果使用这些方法没有问题,execpt它们可能比使用*Buf
FloatBuffer
,类似于一个简单三角形(省略了其他无关的OpenGL调用):
但也有一些变体直接使用数组,例如float[]作为数据。由于我从未在任何在线代码示例中看到过这一点,我想知道是否出于任何原因不鼓励使用它?方法的使用。不建议使用数组而不是
*缓冲区。
您可能无法在网上找到它们的使用示例,因为它们是最近才添加的
如果使用这些方法没有问题,execpt它们可能比使用*Buffer
的方法慢一小部分,因为数组(及其数据)位于头部。这是否是一个实际的性能问题是有争议的,只能通过分析具体情况来确定
所以只要你觉得舒服就用吧
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);