OpenGL Redbook示例中的代码无效。我该如何解决?

时间:2015-02-17 20:17:28

标签: c++ opengl

我正在麻烦地提到:

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部分投射到什么地方?或者告诉我还有什么我可能做错了以及如何解决它?

1 个答案:

答案 0 :(得分:1)

您无法添加到空指针,因为它的大小未定义 将其投放到char *可以解决您的问题。