在我的跨平台OpenGL应用程序中,我想使用顶点缓冲区对象进行绘制。但是我在调​​用glDrawRangeElements时遇到了问题。

glDrawRangeElements(GL_TRIANGLES, start, start + count, count,
            GL_UNSIGNED_INT,  static_cast<GLvoid *>  (start * sizeof(unsigned int)));

编译器(在Mac OS X上为CLang)不喜欢最后一个参数“错误:无法从类型'unsigned long'强制转换为指针类型'GLvoid *'(又名'void *')”。
OpenGL API将最后一个参数的类型定义为const GLvoid *,并且在将此API与顶点数组一起使用时需要一个指针。但是我知道,当使用顶点缓冲区对象而不是指针时,可以预期将代表偏移量的整数值传递到缓冲区数据中。这是我正在尝试做的事情,因此我必须投下。如何通过强制执行严格检查的编译器来协调api的要求?

最佳答案

像这样:
reinterpret_cast <GLvoid *> (start * sizeof(unsigned int));

关于opengl - 如何将int转换为const GLvoid *?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23177229/

10-12 20:15