Java 如果简单数组可以工作,为什么要在OpenGL(LWJGL)中使用缓冲区?

Java 如果简单数组可以工作,为什么要在OpenGL(LWJGL)中使用缓冲区?,java,opengl,lwjgl,Java,Opengl,Lwjgl,因此,我目前正在学习OpenGL,下面的教程说: 我们必须做的第一件事是将浮点数组存储到浮点缓冲区中。这主要是因为我们必须与基于C的OpenGL库接口,因此我们必须将浮点数组转换为库可以管理的内容 我完全明白了这一点,但奇怪的是,LWJGL提供的每个OpenGL方法都可以使用缓冲区,但也可以使用简单的数组 为什么会出现这种情况,为什么我应该使用缓冲区呢 一些例子: 这适用于索引作为IntBuffer但也作为int[]的情况 glBufferData(GL\u数组\u缓冲区、索引、GL\u静态图)

因此,我目前正在学习OpenGL,下面的教程说:

我们必须做的第一件事是将浮点数组存储到浮点缓冲区中。这主要是因为我们必须与基于C的OpenGL库接口,因此我们必须将浮点数组转换为库可以管理的内容

我完全明白了这一点,但奇怪的是,LWJGL提供的每个OpenGL方法都可以使用缓冲区,但也可以使用简单的数组

为什么会出现这种情况,为什么我应该使用缓冲区呢

一些例子:

这适用于
索引
作为
IntBuffer
但也作为
int[]
的情况

glBufferData(GL\u数组\u缓冲区、索引、GL\u静态图);
这适用于
value
FloatBuffer
但也是
float[]
的情况

glUniformMatrix4fv(
制服。获取(制服名称),
假,,
价值
);
根据引文,我假设本教程不是为LWJGL 3编写的

是第一个向“Java数组参数”风格的方法添加支持的版本,以前只使用/支持NIO缓冲区

增加了对Java数组参数和热点关键本机的支持


根据

中的讨论,这是否回答了您的问题@吉本不,这不是我要找的。我认为您链接的问题甚至与堆外分配LWJGL缓冲区无关。