【发布时间】:2014-03-29 02:43:13
【问题描述】:
在我提出另一个问题之后,这是一个我想避免使用offsetof 的具体示例。
要使用glVertexAttribPointer,我必须使用offsetof 作为最后一个参数。
glVertexAttribPointer(GLKVertexAttribColor, 4, GL_FLOAT, GL_FALSE, sizeof(Vertex),
(const GLvoid *) offsetof(Vertex, _color));
顶点是一个类。有没有办法可以避免使用这个?我尝试使用指向成员的指针,但没有运气。
下面无法编译
glVertexAttribPointer(GLKVertexAttribColor, 3, GL_FLOAT, GL_FALSE, sizeof(Vertex),
(const GLvoid *)&Vertex::_color);
【问题讨论】:
-
为什么还要避开
offsetof? -
这是一个纯 C 特性,我认为 C++ 应该有更好的东西
-
这没有意义。
offsetof是在 C++ 规范中指定的,因此与其他所有内容一样是“C++”功能。 -
这只是一个宏,我想看看ono-macro解决方案。有人说offsetof可以完全绕过,我想看看这个具体的例子能不能做到。
-
这是一个标准宏。所以肯定可以绕过。您可以执行宏所做的相同操作。它通常涉及丑陋的 NULL 指针类型转换,尽管现代编译器通常为此提供内置函数。这里没有任何收获。