我被我的麻烦指的:OpenGL红皮书示例中的代码无效。我该如何解决?
OpenGL的编程指南:官方指南学习的OpenGL 4.3版
在第8版
例2.4在一个名为统一块初始化变量制服:
我tryed编译此代码示例,但得到的编译错误(与那本书的每一个例子,直到如今)
我没能后发现其他人有这个问题(在我发现错误来源后,我眼里有什么奇怪的东西),我试图找出可能存在的问题。
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 *
。
所以我的问题是: 为什么他们试图做一个空指针的指针算法(正如我猜测,那是什么GLvoid *
是)?
而我可能必须将它转换成它正确的长度memcpyed?
因为我是openGL的新手,并且无法真正获得那个(300行)示例的上下文,以便通过我自己获得GLvoid *
正在处理的内容。
任何知道这本书的人,或者至少是这个例子都能告诉我我必须将memcpy的Dst部分转换成什么吗?或者告诉我还有什么我可能做错了以及如何解决它?
你正在得到什么确切的错误?试着用例如铿锵声,它的错误信息将是类似的,但可能只是提供那个单词或短语,让你更好地暗示如何解决这个问题。 – rubenvb 2015-02-17 20:20:06
它简单地说:“1> c:\ users \ dhein \ documents \ visual studio 2010 \ projects \ shadergettingstarted \ shadergettingstarted \ shadergettingstarted.cpp(199):error C2036:'GLvoid *':unknown size ” – dhein 2015-02-17 20:20:44
注意这可能不是与您当前的问题有任何关系......如果您使用的是Visual Studio OpenGL标头,则可以使用版本1.1。这很糟糕,但是,现实是...... euhm ......不好。您需要一些帮助程序库,以在运行时为您提供最新功能。见例如[本教程](http://www.swiftless.com/tutorials/opengl4/1-opengl-window.html),它使用GLEW来实现此目的(向下滚动并获取pdf,网站上的代码缺少所有''在'#include'语句之后... –
rubenvb
2015-02-17 20:25:15