mirror of
https://github.com/HifiExperiments/overte.git
synced 2025-08-10 01:36:26 +02:00
working but often the spectator camera texture is not right.
This commit is contained in:
parent
f75cbfa087
commit
6d64261e94
3 changed files with 38 additions and 21 deletions
|
@ -30,7 +30,7 @@ void ResourceImageItem::setReady(bool ready) {
|
|||
if (ready != m_ready) {
|
||||
m_ready = ready;
|
||||
if (m_ready) {
|
||||
m_updateTimer.start(1000);
|
||||
m_updateTimer.start(100);
|
||||
} else {
|
||||
m_updateTimer.stop();
|
||||
}
|
||||
|
@ -40,6 +40,7 @@ void ResourceImageItem::setReady(bool ready) {
|
|||
|
||||
void ResourceImageItemRenderer::synchronize(QQuickFramebufferObject* item) {
|
||||
ResourceImageItem* resourceImageItem = static_cast<ResourceImageItem*>(item);
|
||||
|
||||
bool urlChanged = false;
|
||||
if( _url != resourceImageItem->getUrl()) {
|
||||
_url = resourceImageItem->getUrl();
|
||||
|
@ -50,11 +51,27 @@ void ResourceImageItemRenderer::synchronize(QQuickFramebufferObject* item) {
|
|||
_ready = resourceImageItem->getReady();
|
||||
readyChanged = true;
|
||||
}
|
||||
|
||||
if (!_ready && readyChanged) {
|
||||
qDebug() << "clearing network texture!!!!!!!!!!!!!!!!!";
|
||||
_networkTexture.clear();
|
||||
}
|
||||
|
||||
_window = resourceImageItem->window();
|
||||
qDebug() << "synchronize called!!!!!!!";
|
||||
if (_ready && !_url.isNull() && !_url.isEmpty() && (readyChanged || urlChanged)) {
|
||||
if (_ready && !_url.isNull() && !_url.isEmpty() && (urlChanged || readyChanged || !_networkTexture)) {
|
||||
_networkTexture = DependencyManager::get<TextureCache>()->getTexture(_url);
|
||||
}
|
||||
|
||||
if (_networkTexture) {
|
||||
qDebug() << "copying texture";
|
||||
auto texture = _networkTexture->getGPUTexture();
|
||||
if (texture) {
|
||||
if (_fboMutex.tryLock()) {
|
||||
qApp->getActiveDisplayPlugin()->copyTextureToQuickFramebuffer(texture, framebufferObject());
|
||||
_fboMutex.unlock();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
QOpenGLFramebufferObject* ResourceImageItemRenderer::createFramebufferObject(const QSize& size) {
|
||||
|
@ -64,12 +81,7 @@ QOpenGLFramebufferObject* ResourceImageItemRenderer::createFramebufferObject(con
|
|||
}
|
||||
|
||||
void ResourceImageItemRenderer::render() {
|
||||
qDebug() << "render called!!!!!!!!!!!!!!";
|
||||
if (_networkTexture && _ready) {
|
||||
auto texture = _networkTexture->getGPUTexture();
|
||||
if (texture) {
|
||||
qApp->getActiveDisplayPlugin()->copyTextureToQuickFramebuffer(texture, framebufferObject());
|
||||
_window->resetOpenGLState();
|
||||
}
|
||||
}
|
||||
_fboMutex.lock();
|
||||
_window->resetOpenGLState();
|
||||
_fboMutex.unlock();
|
||||
}
|
||||
|
|
|
@ -24,8 +24,11 @@ public:
|
|||
private:
|
||||
bool _ready;
|
||||
QString _url;
|
||||
|
||||
NetworkTexturePointer _networkTexture;
|
||||
QQuickWindow* _window;
|
||||
QOpenGLFramebufferObject* _copyFbo;
|
||||
QMutex _fboMutex;
|
||||
};
|
||||
|
||||
class ResourceImageItem : public QQuickFramebufferObject {
|
||||
|
|
|
@ -891,10 +891,12 @@ NetworkTexturePointer TextureCache::getResourceTexture(QUrl resourceTextureUrl)
|
|||
if (!_spectatorCameraNetworkTexture) {
|
||||
_spectatorCameraNetworkTexture.reset(new NetworkTexture(resourceTextureUrl));
|
||||
}
|
||||
texture = _spectatorCameraFramebuffer->getRenderBuffer(0);
|
||||
if (texture) {
|
||||
_spectatorCameraNetworkTexture->setImage(texture, texture->getWidth(), texture->getHeight());
|
||||
return _spectatorCameraNetworkTexture;
|
||||
if (_spectatorCameraFramebuffer) {
|
||||
texture = _spectatorCameraFramebuffer->getRenderBuffer(0);
|
||||
if (texture) {
|
||||
_spectatorCameraNetworkTexture->setImage(texture, texture->getWidth(), texture->getHeight());
|
||||
return _spectatorCameraNetworkTexture;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue