查看: 1177|回复: 6

看《最长的一帧》提问 GraphicsContext

[复制链接]

该用户从未签到

发表于 2012-11-25 16:54:12 | 显示全部楼层 |阅读模式
如果用户没有自建一个相机,并创建一个Craphic Context,那么应该调用View::setUpViewAcrossAllScreens();
在这个情况下,比如我在windows7平台下运行程序,也应该需要系统相关信息和API的调用吧;
在View::setUpViewAcrossAllScreens()中,只看到了这样的一句:
osg::GraphicsContext::WindowingSystemInterface* wsi = osg::GraphicsContext::getWindowingSystemInterface();
我就是想在源码中看到,当用户为指定设备上下文时,库的设计者在哪里得到的用户平台信息。

该用户从未签到

发表于 2012-11-26 08:14:31 | 显示全部楼层
CMakeLists.txt 中 根据不同平台加载不同的文件

该用户从未签到

 楼主| 发表于 2012-11-26 19:28:48 | 显示全部楼层
liuzhiyu123 发表于 2012-11-26 08:14
CMakeLists.txt 中 根据不同平台加载不同的文件

系统信息确实是有办法获取,  但是从库本身的源码角度来说 依据在哪呢

该用户从未签到

发表于 2012-11-27 07:53:11 | 显示全部楼层
什么根据在哪里?gc和win32gc 的文件 您没看完吧,看完就知道怎么回事了

该用户从未签到

 楼主| 发表于 2012-11-27 10:28:54 | 显示全部楼层
liuzhiyu123 发表于 2012-11-27 07:53
什么根据在哪里?gc和win32gc 的文件 您没看完吧,看完就知道怎么回事了

看了 没找到到依据在哪里,就是从库代码逻辑关系上,如何使win32gc起作用  您肯定看完了吧,告诉我在哪里就可以了

该用户从未签到

发表于 2012-11-27 11:06:15 | 显示全部楼层
GraphicsWindowWin32.cpp 文件最后面那个结构体

该用户从未签到

 楼主| 发表于 2012-11-27 21:23:46 | 显示全部楼层
哦 找到啦 原来是 有个局部变量  会在主函数运行前前初始化:
static RegisterWindowingSystemInterfaceProxy createWindowingSystemInterfaceProxy;
这样的话在在构造函数中调用GraphicsContext的静态方法
osg::GraphicsContext::setWindowingSystemInterface(Win32WindowingSystem::getInterface());

然后再osg::View中调用的osg::GraphicsContext::getWindowingSystemInterface();  获取到的就是Win32WindowingSystem::getInterface()

谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表