查看: 1580|回复: 3

求助,osg在a卡多屏上黑屏

[复制链接]

该用户从未签到

发表于 2014-1-13 08:25:16 来自手机 | 显示全部楼层 |阅读模式
本帖最后由 秋月真理奈 于 2014-1-13 14:52 编辑

之前程序在n卡上跑得好好的,前几天新入了一台机器,主板P9X79WS显卡三块7750魔神,想组建18屏结果发现只有第一块显卡的六个屏幕显示正常,剩下的都是全黑,怎么破?

程序里用mfc创建CWnd获取HWND交给osg显示,渲染的东西是同一个GraphicsContext不同Camera

该用户从未签到

 楼主| 发表于 2014-1-18 15:53:06 来自手机 | 显示全部楼层
在网上看到有人说nvidia的驱动会把opengl指令广播给每一块显卡,每块显卡都绘制
而ati驱动只会把opengl指令发给窗口创建时的那一块显卡,所以当窗口移到别的显卡上就makecurrent失败了,
是不是这样子的?怎么解决?

该用户从未签到

 楼主| 发表于 2014-2-15 00:49:11 | 显示全部楼层
本帖最后由 秋月真理奈 于 2014-2-15 10:04 编辑

折腾了一番,这个问题算是避开了。

机器的操作系统是64位win7,osg默认使用wglCreateContextAttribARB创建opengl3.3的HGLRC,但是在子线程里调用wglMakeCurrent总返回false

并且我还发现,在第一块A卡的HDC上create的HGLRC,主线程或子线程里wglMakeCurrent总能成功;对于非第一块A卡的HDC,主线程里wglMakeCurrent能成功,子线程wglMakeCurrent必返回false

我避开这问题的做法是,改osg源码,用wglCreateContext建2.0的context,然后多a卡多线程就没问题了【【用wglcreatecontextattribarb建1.5或2.0的context问题依旧

总之,黑屏的原因是osg调wglMakeCurrent失败,即机器硬件是AMD显卡wglCreateContextARB非第一块显卡上创建HGLRC,过后又在子线程里wglMakeCurrent失败,刚好这四个条件都被我撞上了。这bug应该算在AMD驱动头上,我试了试,13.1/13.4/13.9/13.12的catalyst驱动都不行

该用户从未签到

发表于 2014-2-18 15:30:50 | 显示全部楼层
amd的OpenGL驱动一直就是狗屎,这个地球人都知道。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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