mirror of
https://github.com/overte-org/overte.git
synced 2025-08-09 07:37:20 +02:00
cleanup
This commit is contained in:
parent
12b5cccfc7
commit
a82930cb7a
3 changed files with 43 additions and 28 deletions
|
@ -1,6 +1,6 @@
|
||||||
set(TARGET_NAME display-plugins)
|
set(TARGET_NAME display-plugins)
|
||||||
setup_hifi_library(OpenGL)
|
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()
|
target_opengl()
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,9 @@
|
||||||
#include <gl/GLWidget.h>
|
#include <gl/GLWidget.h>
|
||||||
#include <shared/NsightHelpers.h>
|
#include <shared/NsightHelpers.h>
|
||||||
|
|
||||||
#include <TextureCache.h>
|
#include <NetworkAccessManager.h>
|
||||||
|
#include <QNetworkRequest>
|
||||||
|
#include <QNetworkReply>
|
||||||
#include <gpu/DrawUnitQuadTexcoord_vert.h>
|
#include <gpu/DrawUnitQuadTexcoord_vert.h>
|
||||||
#include <gpu/DrawTexture_frag.h>
|
#include <gpu/DrawTexture_frag.h>
|
||||||
|
|
||||||
|
@ -64,28 +66,39 @@ bool HmdDisplayPlugin::internalActivate() {
|
||||||
|
|
||||||
_firstPreview = true;
|
_firstPreview = true;
|
||||||
if (_previewTextureID == 0) {
|
if (_previewTextureID == 0) {
|
||||||
const QString url("https://hifi-content.s3.amazonaws.com/samuel/preview.png");
|
const QUrl previewURL("https://hifi-content.s3.amazonaws.com/samuel/preview.png");
|
||||||
_previewTexture = DependencyManager::get<TextureCache>()->getTexture(url);
|
QNetworkAccessManager& manager = NetworkAccessManager::getInstance();
|
||||||
|
QNetworkRequest request(previewURL);
|
||||||
// const QString path("/Users/computer33/Documents/preview.png");
|
request.setHeader(QNetworkRequest::UserAgentHeader, HIGH_FIDELITY_USER_AGENT);
|
||||||
// QImage previewTexture(path);
|
// connect(&manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(downloadFinished(QNetworkReply*)));
|
||||||
// if (!previewTexture.isNull()) {
|
manager.get(request);
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return Parent::internalActivate();
|
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() {
|
void HmdDisplayPlugin::internalDeactivate() {
|
||||||
if (_previewTextureID != 0) {
|
if (_previewTextureID != 0) {
|
||||||
glDeleteTextures(1, &_previewTextureID);
|
glDeleteTextures(1, &_previewTextureID);
|
||||||
|
@ -270,7 +283,8 @@ void HmdDisplayPlugin::customizeContext() {
|
||||||
|
|
||||||
using namespace oglplus;
|
using namespace oglplus;
|
||||||
if (!_enablePreview) {
|
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<int>(*_previewProgram, "colorMap").Location();
|
PREVIEW_TEXTURE_LOCATION = Uniform<int>(*_previewProgram, "colorMap").Location();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -313,8 +327,8 @@ void HmdDisplayPlugin::compositeScene() {
|
||||||
useProgram(_reprojectionProgram);
|
useProgram(_reprojectionProgram);
|
||||||
|
|
||||||
using namespace oglplus;
|
using namespace oglplus;
|
||||||
oglplus::Texture::MinFilter(TextureTarget::_2D, TextureMinFilter::Linear);
|
Texture::MinFilter(TextureTarget::_2D, TextureMinFilter::Linear);
|
||||||
oglplus::Texture::MagFilter(TextureTarget::_2D, TextureMagFilter::Linear);
|
Texture::MagFilter(TextureTarget::_2D, TextureMagFilter::Linear);
|
||||||
Uniform<glm::mat3>(*_reprojectionProgram, REPROJECTION_MATRIX_LOCATION).Set(_currentPresentFrameInfo.presentReprojection);
|
Uniform<glm::mat3>(*_reprojectionProgram, REPROJECTION_MATRIX_LOCATION).Set(_currentPresentFrameInfo.presentReprojection);
|
||||||
//Uniform<glm::mat4>(*_reprojectionProgram, PROJECTION_MATRIX_LOCATION).Set(_eyeProjections);
|
//Uniform<glm::mat4>(*_reprojectionProgram, PROJECTION_MATRIX_LOCATION).Set(_eyeProjections);
|
||||||
//Uniform<glm::mat4>(*_reprojectionProgram, INVERSE_PROJECTION_MATRIX_LOCATION).Set(_eyeInverseProjections);
|
//Uniform<glm::mat4>(*_reprojectionProgram, INVERSE_PROJECTION_MATRIX_LOCATION).Set(_eyeInverseProjections);
|
||||||
|
@ -385,7 +399,7 @@ void HmdDisplayPlugin::internalPresent() {
|
||||||
if (_enablePreview) {
|
if (_enablePreview) {
|
||||||
float windowAspect = aspect(windowSize);
|
float windowAspect = aspect(windowSize);
|
||||||
float sceneAspect = aspect(_renderTargetSize);
|
float sceneAspect = aspect(_renderTargetSize);
|
||||||
if (_enablePreview && _monoPreview) {
|
if (_monoPreview) {
|
||||||
sceneAspect /= 2.0f;
|
sceneAspect /= 2.0f;
|
||||||
}
|
}
|
||||||
float aspectRatio = sceneAspect / windowAspect;
|
float aspectRatio = sceneAspect / windowAspect;
|
||||||
|
@ -419,9 +433,9 @@ void HmdDisplayPlugin::internalPresent() {
|
||||||
});
|
});
|
||||||
swapBuffers();
|
swapBuffers();
|
||||||
} else if (_firstPreview || windowSize != _prevWindowSize || devicePixelRatio != _prevDevicePixelRatio) {
|
} else if (_firstPreview || windowSize != _prevWindowSize || devicePixelRatio != _prevDevicePixelRatio) {
|
||||||
if (_previewTexture) qDebug() << _previewTexture->getBytesReceived();
|
if (_previewTextureID != 0) {
|
||||||
if (PREVIEW_TEXTURE_LOCATION != -1 && _previewTextureID != 0) {
|
|
||||||
useProgram(_previewProgram);
|
useProgram(_previewProgram);
|
||||||
|
windowSize *= devicePixelRatio;
|
||||||
glViewport(0, 0, windowSize.x, windowSize.y);
|
glViewport(0, 0, windowSize.x, windowSize.y);
|
||||||
glUniform1i(PREVIEW_TEXTURE_LOCATION, 0);
|
glUniform1i(PREVIEW_TEXTURE_LOCATION, 0);
|
||||||
glActiveTexture(GL_TEXTURE0);
|
glActiveTexture(GL_TEXTURE0);
|
||||||
|
|
|
@ -14,8 +14,7 @@
|
||||||
|
|
||||||
#include "../OpenGLDisplayPlugin.h"
|
#include "../OpenGLDisplayPlugin.h"
|
||||||
|
|
||||||
class NetworkTexture;
|
class QNetworkReply;
|
||||||
using NetworkTexturePointer = QSharedPointer<NetworkTexture>;
|
|
||||||
|
|
||||||
class HmdDisplayPlugin : public OpenGLDisplayPlugin {
|
class HmdDisplayPlugin : public OpenGLDisplayPlugin {
|
||||||
using Parent = OpenGLDisplayPlugin;
|
using Parent = OpenGLDisplayPlugin;
|
||||||
|
@ -89,6 +88,9 @@ protected:
|
||||||
FrameInfo _currentPresentFrameInfo;
|
FrameInfo _currentPresentFrameInfo;
|
||||||
FrameInfo _currentRenderFrameInfo;
|
FrameInfo _currentRenderFrameInfo;
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
void downloadFinished(QNetworkReply* reply);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool _enablePreview { false };
|
bool _enablePreview { false };
|
||||||
bool _monoPreview { true };
|
bool _monoPreview { true };
|
||||||
|
@ -96,7 +98,6 @@ private:
|
||||||
bool _firstPreview { true };
|
bool _firstPreview { true };
|
||||||
ProgramPtr _previewProgram;
|
ProgramPtr _previewProgram;
|
||||||
GLuint _previewTextureID { 0 };
|
GLuint _previewTextureID { 0 };
|
||||||
NetworkTexturePointer _previewTexture { nullptr };
|
|
||||||
glm::uvec2 _prevWindowSize { 0, 0 };
|
glm::uvec2 _prevWindowSize { 0, 0 };
|
||||||
qreal _prevDevicePixelRatio { 0 };
|
qreal _prevDevicePixelRatio { 0 };
|
||||||
ShapeWrapperPtr _sphereSection;
|
ShapeWrapperPtr _sphereSection;
|
||||||
|
|
Loading…
Reference in a new issue