我正在使用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 []作为数据。由于我从未在网上找到任何代码示例中使用的内容,我想知道是否因任何原因而气馁?
答案 0 :(得分:1)
方法的用法。数组而不是*Buffer
不是气馁。
您可能无法在线找到他们的使用示例,因为最近才添加。
AFAIK使用这些方法没有任何问题, execpt 它们可能比*Buffer
慢一些,因为数组(及其数据)在头部。这是否是一个实际的性能问题是有争议的,只能通过分析具体情况来识别。
所以只需使用你更舒服的东西。