gpt4 book ai didi

opengl - 定义指向 OpenGL 顶点数组对象的指针

转载 作者:行者123 更新时间:2023-12-02 00:50:32 24 4
gpt4 key购买 nike

考虑以下 OpenGL 代码片段:

GLuint vao;
glCreateVertexArrays(1, glBindVertexArray(&vao));

我的印象是这段代码的作用是

  1. 创建一个 GLuint 类型的指针,它最终将指向一个 OpenGL 顶点数组对象。这个指针的名字是vao
  2. 通过 OpenGL 为实际的顶点数组对象间接分配内存(即不使用 C 中的 malloc 或 C++ 中的 new)。完成此操作的方法是通过函数 glCreateVertexArrays。此函数还使指针 vao 指向顶点数组对象。

我的理解对吗?如果是这样,在 (1) 中,为什么指针的类型是 GLuint 而不是明确定义为指针类型(例如 C/C++ 中的 * 或OpenGL 类型 GLintptr)?

最佳答案

此代码无效,glBindVertexArray 返回void 因此您不能将其返回值作为参数传递给glCreateVertexArrays,因为没有。

根据 OpenGL 4.5 配置文件,创建 VAO 的正确方法是:

GLuint vao;
glCreateVertexArrays(1, &vao);

根据 vao 的含义以及为什么它的类型是 GLuint:它不是指针。它是一个不透明的值,在内部用于在 OpenGL 实现表中定位 VAO。驱动程序可以在 CPU 和/或 GPU 上分配内存,用于存储与 VAO 关联的状态。它是一个复杂的状态,有很多簿记,比 mallocnew 复杂得多。 (特别是 malloc 不能用于分配 GPU 内存。)

关于opengl - 定义指向 OpenGL 顶点数组对象的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40310019/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com