VS平台的选择
机器上装的是Windows 10,微软推荐的VS版本是2013以上,于是就下了个vs2015 community,使用过程中发现了两个问题,一个书里的示例的库版本和VS的会冲突,需要忽略libcmtd.lib才能正常编译,另外还有一个问题是当程序崩溃之后,15版本的VS会有一定概率的不响应,只能杀掉重启,不知道是我机器问题还是VS的问题,这点挺烦人的,于是换上了vs2013 community,到现在为止一切OK。有一点需要提一下的是在拆卸vs2015后,vs2013装不上,经过排查是.Net 4.5.1导致的,拆掉之后安装正常。
vs2013汉化问题
从官网下载的vs2013 community是英文版本的,他的下载链接下发有提供一个中文语言包,安装完VS之后直接运行语言包会提示打开了程序兼容模式,安装失败。这里有个办法,就是创建一个快捷方式,然后在目标栏的最后添 -Uninstall,运行之,启动修复模式,中间会提示好几次缺少包,点跳过就是了。
函数指指针为空问题
新建项目,编译成功之后(具体操作),出现了一个空函数指针的错误
经过多次测试,发现是指定OpenGL的版本导致的:
glutInitContextVersion(4, 3);
glutInitContextProfile(GLUT_CORE_PROFILE);
如果把版本改成3.1或以下,运行正常,一开始以为是显卡不支持高版本的GL导致的,使用glewinfo.exe查询了一下,发现不是显卡的原因。
从glew返回的信息来看,最高都支持到了4.5了,4.3应该是支持的。经过查找,问题出在这儿:
http://stackoverflow.com/questions/30061443/opengl-glgenvertexarrays-access-violation-executing-location-0x00000000
解决方法是在glewInit()之前添加一句代码
glewExperimental = true;
if (glewInit())
...
具体的原因在链接里说的很明白了。
画不出东西问题
OpenGL3.1之后,都需要指定至少两个着色器,所以要把代码里的两个着色器放到程序目录里。