我的设置是双显示器,我希望应用程序在一个显示器中运行并在其中呈现另一个(主)显示器。为了加快速度,我有插件(.dll / .bundle)从Unity接收Texture2D(使用GetNativeTexturePointer())并使用OpenGL将帧缓冲区复制到GPU中的纹理。目标是留在视频内存中,避免任何CPU /系统内存复制。
我使用以下代码:
GLint gltex = (GLint)(size_t)(g_TexturePointer);
glBindTexture(GL_TEXTURE_2D, gltex);
glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, mainMonitorWidth, mainMonitorHeight);
glBindTexture(GL_TEXTURE_2D, 0);
我无法修复一个大问题,此代码仅复制应用程序的窗口,而不是整个其他监视器。我相信这可能是因为我使用了错误的OpenGL上下文?如果是这种情况,我似乎无法找到在Windows / Mac OS中获得正确上下文的方法。我的两个主要目标是保持我的应用程序快速运行(并以高刷新率),并且还可移植,但性能优先。