昨天必须解决cg和opengl的客户端系统兼容性问题,终于搞到今天凌晨时解决了。和那篇 《SQL SERVER Compact 部署时的一些注意事项记录》的原理一样,通过ClickOnece技术,我们需要在*.exe程序所在目录部署一些Dll。分别有两种模式,OPENGL和D3D:
如果单单只是使用OPENGL库的话,GLUT32.DLL是必备的。在编译项目的时候,要选择release模式,这样也就不需要客户端必须安装VC++运行时来做支持了。如果用Debug模式编译的话,会很惨:客户电脑会弹出提示:没有什么正确的配置文件,原话不记得了,意思就是这样。
现在说到cg环境:cgc.dll和glut32.dll和*.cg是必备的。即使是设置为运行在DirectX3d模式也十有八九会需要用到glut32.dll,个中原因懒得去推敲了。在DirectX3d模式下还需要用到cgGL.dll。
上面提到的所有dll文件,最好是复制cg库里面自带的,能够保证最大的稳定性和兼容性。
还有一个懒办法:如果你不想记忆那么多的规则,就直接把cgc.exe所在目录的那几个dll全部复制出来就是了,这样无论你在客户端设置任何运行时模式,都能够成功运行。
以上的配置在visual studio 2005的c++中编译通过,在另一台除了显示驱动之外什么都没有安装的裸机上运行通过。操作系统全部是32位,如果程序有可能运行在64位系统上的话,建议把cg环境下设置为DirectX3d模式运行,如果要使用OPENGL模式的话也一定要在cg环境下通过profile来间接使用,而不要直接通过OPENGL库来编写代码,因为好像在哪里看到过glut32.dll在64位系统上运行会有问题,反正我自己没有测试过。


