first cut, still stereo

This commit is contained in:
David Kelly 2017-07-06 15:59:24 -07:00
parent ee86638c4e
commit b41c470064
5 changed files with 37 additions and 18 deletions

View file

@ -360,6 +360,8 @@ Rectangle {
}
break;
case 'showPreviewTextureNotInstructions':
console.log('showPreviewTextureNotInstructions recvd', JSON.stringify(message));
spectatorCameraPreview.url = message.url;
spectatorCameraPreview.visible = message.setting;
break;
default:

View file

@ -287,6 +287,7 @@ void HmdDisplayPlugin::internalPresent() {
viewport.z *= 2;
}
DependencyManager::get<TextureCache>()->setHmdPreviewTexture(_compositeFramebuffer->getRenderBuffer(0));
renderFromTexture(batch, _compositeFramebuffer->getRenderBuffer(0), viewport, scissor);
});
swapBuffers();

View file

@ -54,6 +54,7 @@ const std::string TextureCache::KTX_EXT { "ktx" };
static const QString RESOURCE_SCHEME = "resource";
static const QUrl SPECTATOR_CAMERA_FRAME_URL("resource://spectatorCameraFrame");
static const QUrl HMD_PREVIEW_FRAME_URL("resource://hmdPreviewFrame");
static const float SKYBOX_LOAD_PRIORITY { 10.0f }; // Make sure skybox loads first
static const float HIGH_MIPS_LOAD_PRIORITY { 9.0f }; // Make sure high mips loads after skybox but before models
@ -969,6 +970,12 @@ void ImageReader::read() {
Q_ARG(int, texture->getHeight()));
}
void TextureCache::setHmdPreviewTexture(gpu::TexturePointer texturePointer) {
if (!_hmdPreviewNetworkTexture) {
_hmdPreviewNetworkTexture.reset(new NetworkTexture(HMD_PREVIEW_FRAME_URL));
}
_hmdPreviewNetworkTexture->setImage(texturePointer, texturePointer->getWidth(), texturePointer->getHeight());
}
NetworkTexturePointer TextureCache::getResourceTexture(QUrl resourceTextureUrl) {
gpu::TexturePointer texture;
@ -984,6 +991,11 @@ NetworkTexturePointer TextureCache::getResourceTexture(QUrl resourceTextureUrl)
}
}
}
if (resourceTextureUrl == HMD_PREVIEW_FRAME_URL) {
if (_hmdPreviewNetworkTexture) {
return _hmdPreviewNetworkTexture;
}
}
return NetworkTexturePointer();
}

View file

@ -170,6 +170,7 @@ public:
NetworkTexturePointer getResourceTexture(QUrl resourceTextureUrl);
const gpu::FramebufferPointer& getSpectatorCameraFramebuffer();
void resetSpectatorCameraFramebuffer(int width, int height);
void setHmdPreviewTexture(gpu::TexturePointer texturePointer);
protected:
// Overload ResourceCache::prefetch to allow specifying texture type for loads
@ -202,6 +203,8 @@ private:
NetworkTexturePointer _spectatorCameraNetworkTexture;
gpu::FramebufferPointer _spectatorCameraFramebuffer;
NetworkTexturePointer _hmdPreviewNetworkTexture;
};
#endif // hifi_TextureCache_h

View file

@ -217,8 +217,9 @@
// 3. Camera is on; "Monitor Shows" is "HMD Preview": "url" is ""
// 4. Camera is on; "Monitor Shows" is "Camera View": "url" is "resource://spectatorCameraFrame"
function setDisplay(showCameraView) {
var url = (camera && showCameraView) ? "resource://spectatorCameraFrame" : "";
sendToQml({ method: 'showPreviewTextureNotInstructions', setting: !!url });
var url = (camera) ? (showCameraView ? "resource://spectatorCameraFrame" : "resource://hmdPreviewFrame") : "";
sendToQml({ method: 'showPreviewTextureNotInstructions', setting: !!url, url: url});
Window.setDisplayTexture(url);
}
const MONITOR_SHOWS_CAMERA_VIEW_DEFAULT = false;