diff --git a/interface/resources/images/preview.png b/interface/resources/images/preview.png new file mode 100644 index 0000000000..faebbfce8f Binary files /dev/null and b/interface/resources/images/preview.png differ diff --git a/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.cpp b/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.cpp index f1f300c72b..c2497e5740 100644 --- a/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.cpp +++ b/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.cpp @@ -21,12 +21,11 @@ #include #include -#include -#include -#include #include #include +#include + #include "../Logging.h" #include "../CompositorHelper.h" @@ -65,33 +64,24 @@ bool HmdDisplayPlugin::internalActivate() { }); if (_previewTextureID == 0) { - const QUrl previewURL("https://hifi-content.s3.amazonaws.com/samuel/preview.png"); - QNetworkAccessManager& manager = NetworkAccessManager::getInstance(); - QNetworkRequest request(previewURL); - request.setHeader(QNetworkRequest::UserAgentHeader, HIGH_FIDELITY_USER_AGENT); - auto rep = manager.get(request); - connect(rep, SIGNAL(finished()), this, SLOT(downloadFinished())); + QImage previewTexture(PathUtils::resourcesPath() + "images/preview.png"); + if (!previewTexture.isNull()) { + glGenTextures(1, &_previewTextureID); + glBindTexture(GL_TEXTURE_2D, _previewTextureID); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, previewTexture.width(), previewTexture.height(), 0, + GL_BGRA, GL_UNSIGNED_BYTE, previewTexture.mirrored(false, true).bits()); + using namespace oglplus; + Texture::MinFilter(TextureTarget::_2D, TextureMinFilter::Linear); + Texture::MagFilter(TextureTarget::_2D, TextureMagFilter::Linear); + glBindTexture(GL_TEXTURE_2D, 0); + _previewAspect = ((float)previewTexture.width())/((float)previewTexture.height()); + _firstPreview = true; + } } return Parent::internalActivate(); } -void HmdDisplayPlugin::downloadFinished() { - QNetworkReply* reply = static_cast(sender()); - - if (reply->error() != QNetworkReply::NetworkError::NoError) { - qDebug() << "HMDDisplayPlugin: error downloading preview image" << reply->errorString(); - return; - } - - _previewTexture.loadFromData(reply->readAll()); - - if (!_previewTexture.isNull()) { - _previewAspect = ((float)_previewTexture.width())/((float)_previewTexture.height()); - _firstPreview = true; - } -} - void HmdDisplayPlugin::internalDeactivate() { if (_previewTextureID != 0) { glDeleteTextures(1, &_previewTextureID); @@ -427,19 +417,8 @@ void HmdDisplayPlugin::internalPresent() { }); swapBuffers(); } else if (_firstPreview || windowSize != _prevWindowSize || devicePixelRatio != _prevDevicePixelRatio) { - if (_firstPreview) { - glGenTextures(1, &_previewTextureID); - glBindTexture(GL_TEXTURE_2D, _previewTextureID); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, _previewTexture.width(), _previewTexture.height(), 0, - GL_BGRA, GL_UNSIGNED_BYTE, _previewTexture.mirrored(false, true).bits()); - using namespace oglplus; - Texture::MinFilter(TextureTarget::_2D, TextureMinFilter::Linear); - Texture::MagFilter(TextureTarget::_2D, TextureMagFilter::Linear); - glBindTexture(GL_TEXTURE_2D, 0); - _firstPreview = false; - } useProgram(_previewProgram); - glEnable (GL_BLEND); + glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); glClearColor(0, 0, 0, 1); glClear(GL_COLOR_BUFFER_BIT); @@ -449,6 +428,7 @@ void HmdDisplayPlugin::internalPresent() { glBindTexture(GL_TEXTURE_2D, _previewTextureID); glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); swapBuffers(); + _firstPreview = false; _prevWindowSize = windowSize; _prevDevicePixelRatio = devicePixelRatio; } diff --git a/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.h b/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.h index 61b352b17b..8e48690fd1 100644 --- a/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.h +++ b/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.h @@ -15,7 +15,6 @@ #include "../OpenGLDisplayPlugin.h" class HmdDisplayPlugin : public OpenGLDisplayPlugin { - Q_OBJECT using Parent = OpenGLDisplayPlugin; public: bool isHmd() const override final { return true; } @@ -87,9 +86,6 @@ protected: FrameInfo _currentPresentFrameInfo; FrameInfo _currentRenderFrameInfo; -public slots: - void downloadFinished(); - private: bool _enablePreview { false }; bool _monoPreview { true }; @@ -97,7 +93,6 @@ private: bool _firstPreview { true }; ProgramPtr _previewProgram; - QImage _previewTexture; float _previewAspect { 0 }; GLuint _previewTextureID { 0 }; glm::uvec2 _prevWindowSize { 0, 0 };