c++ - 某些 GL 函数的好奇 "void*"参数

标签 c++ pointers opengl casting

对于 OpenGL 中的某些函数,必须为步长指定一个字节偏移量,例如在 glVertexAttribPointer() 中。起初我会猜测它会是一个像整数一样的普通数值。但经过检查,我意识到它需要转换为 void*(更具体地说是 GLvoid*)。我的问题是:void* 的预期含义是什么,为什么必须将它用于字节偏移量?

最佳答案

glVertexAttribPointer() 是 Vertex Buffer Objects 之前的一个旧函数。

在 VBO 之前,您的顶点数据将存储在客户端数组中,您需要在绘制之前将指向数据的指针传递给 OpenGL。

当 VBO 出现时,他们通过允许使用指针传递整数偏移量来重新调整此函数的用途。

例如 void* offset = (void*)offsetof(vertexStructName, vertexMemberName);

关于c++ - 某些 GL 函数的好奇 "void*"参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25074075/

相关文章:

c - 为什么C中的箭头(->)运算符存在?

opengl - 相机标定 : aspect ratio different from image aspect ratio. 如何校正?

c++ OpenGL 段错误

c++ - 如何将一系列if/else if/else if/关系链转换成线性循环代码

c++ - 用于检查未初始化类成员的工具、Visual Studio 设置

c++ - 如何到达vector<list<int>>的指定元素?

pointers - 使用非指针值调用指针接收器方法

c - 正在重新分配的指针未分配

c++ - 使用 C++ 协程实现views::concat?

c++ -/usr/bin/ld : cannot find -lGL