我正在尝试使用LibGDX项目的基本自定义着色器。当我尝试生成VAO时,它表示glGenVertexArrays()
需要int(n)和IntBuffer(缓冲区)。我知道IntBuffer是你如何访问分配的缓冲区空间,但老实说我不知道应该进入n。在我搜索时发现的每个例子中,glGenVertexArrays()
是一个没有参数的方法,只返回VAO的int索引,你可以用它来设置它,绑定它等等。
我应该如何使用它来设置VAO?为什么我的方法签名与我所看到的所有其他LWJGL示例不同?
答案 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()
的对象。