History

Optimizations for occlusion blur (the main one being that we only need to sample the texture four, not sixteen, times if we turn on linear filtering and sample between the texels).

Andrzej Kapolka committed 13 years ago

Commit 22598ce1 parent 8ded4044 files · +31 −20Browse files

Showing the changes to interface/src/renderer/TextureCache.cpp (1 of 4 files). Show all

Unified · Split

interface/src/renderer/TextureCache.cpp+17−8
@@ -64,12 +64,11 @@ GLuint TextureCache::getPermutationNormalTextureID() { · 63 unmodified lines
6464
6565 QOpenGLFramebufferObject* TextureCache::getPrimaryFramebufferObject() {
6666 if (_primaryFramebufferObject == NULL) {
67− QSize size = Application::getInstance()->getGLWidget()->size();
68− _primaryFramebufferObject = new QOpenGLFramebufferObject(size);
69− Application::getInstance()->getGLWidget()->installEventFilter(this);
70−
67+ _primaryFramebufferObject = createFramebufferObject();
68+
7169 glGenTextures(1, &_primaryDepthTextureID);
7270 glBindTexture(GL_TEXTURE_2D, _primaryDepthTextureID);
71+ QSize size = Application::getInstance()->getGLWidget()->size();
7372 glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, size.width(), size.height(),
7473 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_BYTE, 0);
7574 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
@@ -91,16 +90,14 @@ GLuint TextureCache::getPrimaryDepthTextureID() { · 15 unmodified lines
9190
9291 QOpenGLFramebufferObject* TextureCache::getSecondaryFramebufferObject() {
9392 if (_secondaryFramebufferObject == NULL) {
94− _secondaryFramebufferObject = new QOpenGLFramebufferObject(Application::getInstance()->getGLWidget()->size());
95− Application::getInstance()->getGLWidget()->installEventFilter(this);
93+ _secondaryFramebufferObject = createFramebufferObject();
9694 }
9795 return _secondaryFramebufferObject;
9896 }
9997
10098 QOpenGLFramebufferObject* TextureCache::getTertiaryFramebufferObject() {
10199 if (_tertiaryFramebufferObject == NULL) {
102− _tertiaryFramebufferObject = new QOpenGLFramebufferObject(Application::getInstance()->getGLWidget()->size());
103− Application::getInstance()->getGLWidget()->installEventFilter(this);
100+ _tertiaryFramebufferObject = createFramebufferObject();
104101 }
105102 return _tertiaryFramebufferObject;
106103 }
@@ -124,3 +121,15 @@ bool TextureCache::eventFilter(QObject* watched, QEvent* event) { · 17 unmodified lines
124121 }
125122 return false;
126123 }
124+
125+QOpenGLFramebufferObject* TextureCache::createFramebufferObject() {
126+ QOpenGLFramebufferObject* fbo = new QOpenGLFramebufferObject(Application::getInstance()->getGLWidget()->size());
127+ Application::getInstance()->getGLWidget()->installEventFilter(this);
128+
129+ glBindTexture(GL_TEXTURE_2D, fbo->texture());
130+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
131+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
132+ glBindTexture(GL_TEXTURE_2D, 0);
133+
134+ return fbo;
135+}

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t