glGenVertexArrays()不应该有任何参数

时间:2017-07-19 22:48:19

标签: java opengl libgdx lwjgl

我正在尝试使用LibGDX项目的基本自定义着色器。当我尝试生成VAO时,它表示glGenVertexArrays()需要int(n)和IntBuffer(缓冲区)。我知道IntBuffer是你如何访问分配的缓冲区空间,但老实说我不知道​​应该进入n。在我搜索时发现的每个例子中,glGenVertexArrays()是一个没有参数的方法,只返回VAO的int索引,你可以用它来设置它,绑定它等等。

我应该如何使用它来设置VAO?为什么我的方法签名与我所看到的所有其他LWJGL示例不同?

1 个答案:

答案 0 :(得分:2)

根据libgdx的来源,您只能根据对象以下列三种方式之一调用它:

//Normal methods
.glGenVertexArrays(int n, int[] arrays, int offset);
.glGenVertexArrays(int n, IntBuffer arrays);

//Method specifically for AndroidGL30.glGenVertexArrays(...
.glGenVertexArrays (int n, java.nio.IntBuffer arrays);

在大多数情况下,n被忽略或仅用作数组大小。以下内容是从LwjglGL30类复制的:

@Override
public void glGenVertexArrays (int n, int[] arrays, int offset) {
    for(int i = offset; i < offset + n; i++) {
        arrays[i] = GL30.glGenVertexArrays();
    }
}

@Override
public void glGenVertexArrays (int n, IntBuffer arrays) {
    GL30.glGenVertexArrays(arrays);
}

因此,我们可以看到,对于IntBuffer方法,您只需在代码中使用以下内容:.glGenVertexArrays(1, myIntBuffer);

参考:

https://github.com/libgdx/libgdx/search?utf8=%E2%9C%93&q=glGenVertexArrays&type=

要获得更多帮助,您应该向我们展示一些代码,以及您用来调用glGenVertexArrays()的对象。