【发布时间】:2019-02-04 19:49:54
【问题描述】:
您好,我正在尝试在不同的监视器上渲染 3 个全屏窗口,直到现在我已经成功查询了现有监视器 EnumDisplayMonitors 以获得创建 3 个应用 WS_POPUP 样式的窗口所需的 4 个参数。
在一帧中我执行以下操作:
for(int i=0; i<monitorsNum; i++)
{
wglMakeCurrent(hdcs[i], sharedHrc);
doRendering();
SwapBuffers(hdcs[i]);
}
许多网站都提出了相同的建议,但是,当我从 1 台显示器切换到 2 台或更多显示器时,纹理消失了:
你看到的是同一个场景渲染了 3 次,稍微不同的背景清晰颜色表明至少我做的东西部分正确(gl 清晰颜色显示正确,它甚至适用于 3 台不同尺寸的显示器) .我试图用 glGetError() 拦截所有 gl 调用而没有任何错误。是否有我遗漏的特定步骤,或者可能是我的笔记本电脑的问题?
如果有帮助,这 3 个窗口是使用现有框架创建的,因此在创建时每个窗口都有自己的 hrc,但是我只为其他 2 个窗口使用一个 hrc。 (因此创建了 3 个 hrc,并使用了 1 个,如果重要的话)
【问题讨论】:
-
当您说 1 台显示器到 2 台或更多台显示器时,您是指 Windows 吗?
-
当您从创建一个窗口到两个或多个窗口纹理“消失”或停止在所有窗口中正确渲染时?所以在创建多个窗口之前,您可以正确渲染纹理?
-
似乎我在上下文中创建了网格和纹理,然后由于某些奇怪的原因,网格在其他上下文中仍然可用,否则我会更早意识到问题