请考虑以下OpenGL代码段:
GLuint vao;
glCreateVertexArrays(1, glBindVertexArray(&vao));
Run Code Online (Sandbox Code Playgroud)
我的印象是这段代码的作用是什么
GLuint最终将指向OpenGL顶点数组对象.这个指针的名字是vao.mallocC或newC++).这样做的方法是通过该功能glCreateVertexArrays.此函数还使指针vao指向顶点数组对象.我的理解是否正确?如果是这样,在(1)中,为什么指针的类型GLuint没有明确定义为指针类型(例如*在C/C++中或使用OpenGL类型GLintptr)?
glBindVertexArray返回此代码无效,void因此无法将其返回值作为参数传递给glCreateVertexArrays,因为没有.
根据OpenGL 4.5配置文件创建VAO的正确方法是:
GLuint vao;
glCreateVertexArrays(1, &vao);
Run Code Online (Sandbox Code Playgroud)
根据其含义vao以及为什么它的类型是GLuint:它不是指针.它是一个不透明的值,在内部用于在OpenGL实现表中定位VAO.驱动程序可以在CPU和/或GPU上分配存储器,用于存储与VAO相关联的状态.这是一个复杂的国家,有很多的簿记,比malloc或更多涉及new.(特别是malloc不能用于分配GPU内存.)
| 归档时间: |
|
| 查看次数: |
87 次 |
| 最近记录: |