LWJGL3:重载的glBufferData方法

时间:2016-06-20 19:27:08

标签: java opengl lwjgl

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

方法user defined literals调用等效的org.lwjgl.opengl.GL15#glBufferData()。 它在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 []作为数据。由于我从未在网上找到任何代码示例中使用的内容,我想知道是否因任何原因而气馁?

1 个答案:

答案 0 :(得分:1)

方法的用法。数组而不是*Buffer不是气馁。 您可能无法在线找到他们的使用示例,因为最近才添加。

AFAIK使用这些方法没有任何问题, execpt 它们可能比*Buffer慢一些,因为数组(及其数据)在头部。这是否是一个实际的性能问题是有争议的,只能通过分析具体情况来识别。

所以只需使用更舒服的东西。