Changeset View
Changeset View
Standalone View
Standalone View
libkwineffects/kwinglutils.cpp
Show First 20 Lines • Show All 1032 Lines • ▼ Show 20 Line(s) | |||||
1033 | 1033 | | |||
1034 | /*** GLRenderTarget ***/ | 1034 | /*** GLRenderTarget ***/ | ||
1035 | bool GLRenderTarget::sSupported = false; | 1035 | bool GLRenderTarget::sSupported = false; | ||
1036 | bool GLRenderTarget::s_blitSupported = false; | 1036 | bool GLRenderTarget::s_blitSupported = false; | ||
1037 | QStack<GLRenderTarget*> GLRenderTarget::s_renderTargets = QStack<GLRenderTarget*>(); | 1037 | QStack<GLRenderTarget*> GLRenderTarget::s_renderTargets = QStack<GLRenderTarget*>(); | ||
1038 | QSize GLRenderTarget::s_virtualScreenSize; | 1038 | QSize GLRenderTarget::s_virtualScreenSize; | ||
1039 | QRect GLRenderTarget::s_virtualScreenGeometry; | 1039 | QRect GLRenderTarget::s_virtualScreenGeometry; | ||
1040 | qreal GLRenderTarget::s_virtualScreenScale = 1.0; | 1040 | qreal GLRenderTarget::s_virtualScreenScale = 1.0; | ||
1041 | GLint GLRenderTarget::s_virtualScreenViewport[4]; | ||||
1041 | 1042 | | |||
1042 | void GLRenderTarget::initStatic() | 1043 | void GLRenderTarget::initStatic() | ||
1043 | { | 1044 | { | ||
1044 | if (GLPlatform::instance()->isGLES()) { | 1045 | if (GLPlatform::instance()->isGLES()) { | ||
1045 | sSupported = true; | 1046 | sSupported = true; | ||
1046 | s_blitSupported = hasGLVersion(3, 0); | 1047 | s_blitSupported = hasGLVersion(3, 0); | ||
1047 | } else { | 1048 | } else { | ||
1048 | sSupported = hasGLVersion(3, 0) || | 1049 | sSupported = hasGLVersion(3, 0) || | ||
Show All 20 Lines | |||||
1069 | 1070 | | |||
1070 | bool GLRenderTarget::blitSupported() | 1071 | bool GLRenderTarget::blitSupported() | ||
1071 | { | 1072 | { | ||
1072 | return s_blitSupported; | 1073 | return s_blitSupported; | ||
1073 | } | 1074 | } | ||
1074 | 1075 | | |||
1075 | void GLRenderTarget::pushRenderTarget(GLRenderTarget* target) | 1076 | void GLRenderTarget::pushRenderTarget(GLRenderTarget* target) | ||
1076 | { | 1077 | { | ||
1078 | if (s_renderTargets.isEmpty()) { | ||||
1079 | glGetIntegerv(GL_VIEWPORT, s_virtualScreenViewport); | ||||
1080 | } | ||||
1077 | target->enable(); | 1081 | target->enable(); | ||
1078 | s_renderTargets.push(target); | 1082 | s_renderTargets.push(target); | ||
1079 | } | 1083 | } | ||
1080 | 1084 | | |||
1081 | GLRenderTarget* GLRenderTarget::popRenderTarget() | 1085 | GLRenderTarget* GLRenderTarget::popRenderTarget() | ||
1082 | { | 1086 | { | ||
1083 | GLRenderTarget* ret = s_renderTargets.pop(); | 1087 | GLRenderTarget* ret = s_renderTargets.pop(); | ||
1084 | ret->disable(); | 1088 | ret->disable(); | ||
1085 | 1089 | | |||
1086 | if (!s_renderTargets.isEmpty()) { | 1090 | if (!s_renderTargets.isEmpty()) { | ||
1087 | s_renderTargets.top()->enable(); | 1091 | s_renderTargets.top()->enable(); | ||
1088 | } else { | 1092 | } else { | ||
1089 | glViewport (-s_virtualScreenGeometry.x(), s_virtualScreenGeometry.height() - s_virtualScreenSize.height() - s_virtualScreenGeometry.y(), | 1093 | glViewport (s_virtualScreenViewport[0], s_virtualScreenViewport[1], s_virtualScreenViewport[2], s_virtualScreenViewport[3]); | ||
1090 | s_virtualScreenSize.width(), s_virtualScreenSize.height()); | | |||
1091 | } | 1094 | } | ||
1092 | | ||||
1093 | return ret; | 1095 | return ret; | ||
1094 | } | 1096 | } | ||
1095 | 1097 | | |||
1096 | GLRenderTarget::GLRenderTarget(const GLTexture& color) | 1098 | GLRenderTarget::GLRenderTarget(const GLTexture& color) | ||
1097 | { | 1099 | { | ||
1098 | // Reset variables | 1100 | // Reset variables | ||
1099 | mValid = false; | 1101 | mValid = false; | ||
1100 | 1102 | | |||
▲ Show 20 Lines • Show All 1148 Lines • Show Last 20 Lines |