我正在麻烦地提到:
OpenGL编程指南:学习OpenGL版本4.3的官方指南
在第8版
示例2.4在命名的统一块中初始化均匀变量:
我尝试编译此代码示例,但编译错误(与该书的每个示例一样,直到现在)
在我找不到其他任何人遇到这个问题后(我自己发现错误来源后,我的眼中有什么奇怪的),我试着找出可能出现的问题。
memcpy(buffer + offset[Scale], &scale, size[Scale] * TypeSize(type[Scale]));
memcpy(buffer + offset[Translation], &translation, size[Translation] * TypeSize(type[Translation]));
memcpy(buffer + offset[Rotation], &rotation, size[Rotation] * TypeSize(type[Rotation]));
memcpy(buffer + offset[Enabled], &enabled, size[Enabled] * TypeSize(type[Enabled]));
这对于行导致错误,其中缓冲区被声明为:GLvoid *
。
所以我的问题是:
为什么他们尝试对void指针进行指针运算(正如我猜的那样,GLvoid *
是什么)?
而我可能需要把它投入到它中,它会记得很长吗?
因为我是openGL的新手,并且无法真正获得那个(300行)示例的上下文,以便我自己了解GLvoid *
正在使用的内容。
任何知道这本书的人,或者至少这个例子都告诉我,我必须将memcpy的Dst部分投射到什么地方?或者告诉我还有什么我可能做错了以及如何解决它?
答案 0 :(得分:1)
您无法添加到空指针,因为它的大小未定义
将其投放到char *
可以解决您的问题。