【问题标题】:LWJGL3: Overloaded glBufferData methodsLWJGL3:重载的 glBufferData 方法
【发布时间】:2016-06-20 19:27:08
【问题描述】:

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

方法org.lwjgl.opengl.GL15#glBufferData() 调用等效的OpenGL method。 它在 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[] 作为数据。由于我从未在网上看到任何代码示例中使用过它,我想知道是否出于任何原因不鼓励使用它?

【问题讨论】:

    标签: java opengl lwjgl


    【解决方案1】:

    方法的使用。 不鼓励使用数组而不是 *Buffer。 您可能在网上找不到它们的使用示例因为它们是最近才添加的。

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

    所以只要使用对你来说更舒服的东西

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-01
      • 2010-09-30
      • 1970-01-01
      • 1970-01-01
      • 2011-02-03
      相关资源
      最近更新 更多