Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java LWJGL3:重载的glBufferData方法_Java_Opengl_Lwjgl - Fatal编程技术网

Java LWJGL3:重载的glBufferData方法

Java LWJGL3:重载的glBufferData方法,java,opengl,lwjgl,Java,Opengl,Lwjgl,我正在使用LWJGL调用OpenGL函数 该方法调用等价项。 它在LWJGL中有几个重载变量,我所见过的最常用的是FloatBuffer,类似于一个简单三角形(省略了其他无关的OpenGL调用): 但也有一些变体直接使用数组,例如float[]作为数据。由于我从未在任何在线代码示例中看到过这一点,我想知道是否出于任何原因不鼓励使用它?方法的使用。不建议使用数组而不是*缓冲区。 您可能无法在网上找到它们的使用示例,因为它们是最近才添加的 如果使用这些方法没有问题,execpt它们可能比使用*Buf

我正在使用LWJGL调用OpenGL函数

该方法调用等价项。 它在LWJGL中有几个重载变量,我所见过的最常用的是
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);