From a82930cb7a07a74dc04f89b63906b182acc41c85 Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Tue, 28 Jun 2016 15:59:58 -0700 Subject: [PATCH] cleanup --- libraries/display-plugins/CMakeLists.txt | 2 +- .../display-plugins/hmd/HmdDisplayPlugin.cpp | 62 ++++++++++++------- .../display-plugins/hmd/HmdDisplayPlugin.h | 7 ++- 3 files changed, 43 insertions(+), 28 deletions(-) diff --git a/libraries/display-plugins/CMakeLists.txt b/libraries/display-plugins/CMakeLists.txt index 7d82b3b665..fe08647074 100644 --- a/libraries/display-plugins/CMakeLists.txt +++ b/libraries/display-plugins/CMakeLists.txt @@ -1,6 +1,6 @@ set(TARGET_NAME display-plugins) setup_hifi_library(OpenGL) -link_hifi_libraries(shared plugins render-utils ui-plugins gl gpu-gl ui) +link_hifi_libraries(shared plugins ui-plugins gl gpu-gl ui) target_opengl() diff --git a/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.cpp b/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.cpp index 082fed787d..6ab6c71211 100644 --- a/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.cpp +++ b/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.cpp @@ -21,7 +21,9 @@ #include #include -#include +#include +#include +#include #include #include @@ -64,28 +66,39 @@ bool HmdDisplayPlugin::internalActivate() { _firstPreview = true; if (_previewTextureID == 0) { - const QString url("https://hifi-content.s3.amazonaws.com/samuel/preview.png"); - _previewTexture = DependencyManager::get()->getTexture(url); - -// const QString path("/Users/computer33/Documents/preview.png"); -// QImage previewTexture(path); -// if (!previewTexture.isNull()) { - if (_previewTexture && _previewTexture->isLoaded()) { -// previewTexture = previewTexture.mirrored(false, true); - glGenTextures(1, &_previewTextureID); - glBindTexture(GL_TEXTURE_2D, _previewTextureID); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, _previewTexture->getWidth(), _previewTexture->getHeight(), 0, - GL_BGRA, GL_UNSIGNED_BYTE, _previewTexture->getGPUTexture()->accessStoredMipFace(0)->readData()); - using namespace oglplus; - oglplus::Texture::MinFilter(TextureTarget::_2D, TextureMinFilter::Linear); - oglplus::Texture::MagFilter(TextureTarget::_2D, TextureMagFilter::Linear); - glBindTexture(GL_TEXTURE_2D, 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); +// connect(&manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(downloadFinished(QNetworkReply*))); + manager.get(request); } return Parent::internalActivate(); } +void HmdDisplayPlugin::downloadFinished(QNetworkReply* reply) { + if (reply->error() != QNetworkReply::NetworkError::NoError) { + qDebug() << "HMDDisplayPlugin: error downloading preview image" << reply->errorString(); + return; + } + + QImage previewTexture; + previewTexture.loadFromData(reply->readAll()); + + if (!previewTexture.isNull()) { + previewTexture = previewTexture.mirrored(false, true); + 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.bits()); + using namespace oglplus; + Texture::MinFilter(TextureTarget::_2D, TextureMinFilter::Linear); + Texture::MagFilter(TextureTarget::_2D, TextureMagFilter::Linear); + glBindTexture(GL_TEXTURE_2D, 0); + } +} + void HmdDisplayPlugin::internalDeactivate() { if (_previewTextureID != 0) { glDeleteTextures(1, &_previewTextureID); @@ -270,7 +283,8 @@ void HmdDisplayPlugin::customizeContext() { using namespace oglplus; if (!_enablePreview) { - compileProgram(_previewProgram, DrawUnitQuadTexcoord_vert, DrawTexture_frag); + std::string version("#version 410 core\n"); + compileProgram(_previewProgram, version + DrawUnitQuadTexcoord_vert, version + DrawTexture_frag); PREVIEW_TEXTURE_LOCATION = Uniform(*_previewProgram, "colorMap").Location(); } @@ -313,8 +327,8 @@ void HmdDisplayPlugin::compositeScene() { useProgram(_reprojectionProgram); using namespace oglplus; - oglplus::Texture::MinFilter(TextureTarget::_2D, TextureMinFilter::Linear); - oglplus::Texture::MagFilter(TextureTarget::_2D, TextureMagFilter::Linear); + Texture::MinFilter(TextureTarget::_2D, TextureMinFilter::Linear); + Texture::MagFilter(TextureTarget::_2D, TextureMagFilter::Linear); Uniform(*_reprojectionProgram, REPROJECTION_MATRIX_LOCATION).Set(_currentPresentFrameInfo.presentReprojection); //Uniform(*_reprojectionProgram, PROJECTION_MATRIX_LOCATION).Set(_eyeProjections); //Uniform(*_reprojectionProgram, INVERSE_PROJECTION_MATRIX_LOCATION).Set(_eyeInverseProjections); @@ -385,7 +399,7 @@ void HmdDisplayPlugin::internalPresent() { if (_enablePreview) { float windowAspect = aspect(windowSize); float sceneAspect = aspect(_renderTargetSize); - if (_enablePreview && _monoPreview) { + if (_monoPreview) { sceneAspect /= 2.0f; } float aspectRatio = sceneAspect / windowAspect; @@ -419,9 +433,9 @@ void HmdDisplayPlugin::internalPresent() { }); swapBuffers(); } else if (_firstPreview || windowSize != _prevWindowSize || devicePixelRatio != _prevDevicePixelRatio) { - if (_previewTexture) qDebug() << _previewTexture->getBytesReceived(); - if (PREVIEW_TEXTURE_LOCATION != -1 && _previewTextureID != 0) { + if (_previewTextureID != 0) { useProgram(_previewProgram); + windowSize *= devicePixelRatio; glViewport(0, 0, windowSize.x, windowSize.y); glUniform1i(PREVIEW_TEXTURE_LOCATION, 0); glActiveTexture(GL_TEXTURE0); diff --git a/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.h b/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.h index ad2fc3509f..3be05ffbe6 100644 --- a/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.h +++ b/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.h @@ -14,8 +14,7 @@ #include "../OpenGLDisplayPlugin.h" -class NetworkTexture; -using NetworkTexturePointer = QSharedPointer; +class QNetworkReply; class HmdDisplayPlugin : public OpenGLDisplayPlugin { using Parent = OpenGLDisplayPlugin; @@ -89,6 +88,9 @@ protected: FrameInfo _currentPresentFrameInfo; FrameInfo _currentRenderFrameInfo; +public slots: + void downloadFinished(QNetworkReply* reply); + private: bool _enablePreview { false }; bool _monoPreview { true }; @@ -96,7 +98,6 @@ private: bool _firstPreview { true }; ProgramPtr _previewProgram; GLuint _previewTextureID { 0 }; - NetworkTexturePointer _previewTexture { nullptr }; glm::uvec2 _prevWindowSize { 0, 0 }; qreal _prevDevicePixelRatio { 0 }; ShapeWrapperPtr _sphereSection;