关于OpenGL红皮书第8版第一个例子的总结

编程环境:

笔记本双显卡 HD 4600 + GTX860M

操作系统 Windows 8.1企业版

编程语言 VS2015企业版

OpenGL工具开发包 freeglut 3.0.0 + glew 1.12.0 

折腾了两天加上查资料总算全解决了,下面把我遇到的情况总结一下。

OpenGL红皮书第8版全面转向着色器的使用,第一个例子就用到了着色语言。


1. 编译遇到的第一个问题就是出现异常:

停到

glGenVertexArrays(NumVAOs, VAOs);   
glBindVertexArray(VAOs[Triangles]); 

这两个语句。

错误提示

0x00000000 处(位于 WC4GL4.exe 中)引发的异常: 0xC0000005: 执行位置 0x00000000 时发生访问冲突。
如有适用于此异常的处理程序,该程序便可安全地继续运行。

查了很多网上资料很多说指针未赋值,为空怎么的,一个数组的全局变量怎么会这样,想到是不是开发包的问题,

重新下载了最新的源程序,重新编译,还是有这个问题,后来查到有人说到具体错误原因及解决方法:

在glewInit() 之前要加上这句:

glewExperimental = GL_TRUE;

具体说明请看原链接:

http://stackoverflow.com/questions/20822087/why-does-this-crash-when-using-opengl-core-profile

2.修改以后

glutInitContextVersion(4,5);
glutInitContextProfile(GLUT_CORE_PROFILE);

版本设置为3.3到4.2程序正常,但是设置为版本4.3到4.5,每次都在glutCreateWindow(argv[0]);处退出,跟踪到源文件

也没有用都是在最后建立窗口的时候直接1退出。

后来想是不是驱动问题,因为编译前用过GPU_Caps_Viewer查过显示OpenGL支持到4.5版本,这时候又用AIDA64 查了下

Intel HD4600显卡确实只支持到4.2版本,4.3版本只支持50%。后来又检查了下GTX 860M显卡支持4.5版本。

这牵扯到双显卡的选用,找到程序输出目录右键选择高性能NVIDIA处理器打开,设为默认高性能打开。

重新选择4.5版本编译后可以运行,但是显示黑屏,到程序目录选择用NVIDIA高性能打开可以正常显示。


3.还有着色语言编写错误可能会出现黑屏。





  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值