我正在寻找一种将 Surface(本机窗口)对象分配给显示器的方法,以便提交到该本机窗口的缓冲区将渲染到该特定显示器而不是主显示器。我想用本机代码来做到这一点。
在Java中,可以通过使用Presentation API来完成。
在本机代码中我尝试调用SurfaceComposerClient::setDisplaySurface()
,将显示的传递给它IBinder
对象(由返回SurfaceComposerClient::getBuiltInDisplay()
),以及IGraphicBufferProducer
对象(由返回Surface::getIGraphicBufferProducer()
)。
问题是显示变为空白,即使我将缓冲区提交到本机窗口,也不会显示任何内容。
如果我不打电话SurfaceComposerClient::setDisplaySurface()
,然后本机窗口呈现到主显示器。
示例代码:
sp<IBinder> display(SurfaceComposerClient::getBuiltInDisplay(1));
SurfaceComposerClient::getDisplayInfo(display, &displayInfo);
surfaceControl = surfaceComposerClient->createSurface(String8(""), displayInfo.w, displayInfo.h, HAL_PIXEL_FORMAT_RGB_565);
sp<Surface> surface = surfaceControl->getSurface();
sp<IGraphicBufferProducer> iGraphicBufferProducer = surface->getIGraphicBufferProducer();
SurfaceComposerClient::setDisplaySurface(display, iGraphicBufferProducer);
有谁知道这是否可以在本机代码中完成,如果可以的话如何实现?
Thanks
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)