Changeset View
Changeset View
Standalone View
Standalone View
libkwineffects/kwinglutils.cpp
Show First 20 Lines • Show All 1944 Lines • ▼ Show 20 Line(s) | 1930 | { | |||
---|---|---|---|---|---|
1945 | return glMapBufferRange(GL_ARRAY_BUFFER, nextOffset, size, access); | 1945 | return glMapBufferRange(GL_ARRAY_BUFFER, nextOffset, size, access); | ||
1946 | } | 1946 | } | ||
1947 | 1947 | | |||
1948 | 1948 | | |||
1949 | //********************************* | 1949 | //********************************* | ||
1950 | // GLVertexBuffer | 1950 | // GLVertexBuffer | ||
1951 | //********************************* | 1951 | //********************************* | ||
1952 | QRect GLVertexBuffer::s_virtualScreenGeometry; | 1952 | QRect GLVertexBuffer::s_virtualScreenGeometry; | ||
1953 | qreal GLVertexBuffer::s_virtualScreenScale; | ||||
1953 | 1954 | | |||
1954 | GLVertexBuffer::GLVertexBuffer(UsageHint hint) | 1955 | GLVertexBuffer::GLVertexBuffer(UsageHint hint) | ||
1955 | : d(new GLVertexBufferPrivate(hint)) | 1956 | : d(new GLVertexBufferPrivate(hint)) | ||
1956 | { | 1957 | { | ||
1957 | } | 1958 | } | ||
1958 | 1959 | | |||
1959 | GLVertexBuffer::~GLVertexBuffer() | 1960 | GLVertexBuffer::~GLVertexBuffer() | ||
1960 | { | 1961 | { | ||
▲ Show 20 Lines • Show All 157 Lines • ▼ Show 20 Line(s) | 2111 | if (primitiveMode == GL_QUADS) { | |||
2118 | 2119 | | |||
2119 | count = count * 6 / 4; | 2120 | count = count * 6 / 4; | ||
2120 | 2121 | | |||
2121 | if (!hardwareClipping) { | 2122 | if (!hardwareClipping) { | ||
2122 | glDrawElementsBaseVertex(GL_TRIANGLES, count, GL_UNSIGNED_SHORT, nullptr, first); | 2123 | glDrawElementsBaseVertex(GL_TRIANGLES, count, GL_UNSIGNED_SHORT, nullptr, first); | ||
2123 | } else { | 2124 | } else { | ||
2124 | // Clip using scissoring | 2125 | // Clip using scissoring | ||
2125 | foreach (const QRect &r, region.rects()) { | 2126 | foreach (const QRect &r, region.rects()) { | ||
2126 | glScissor(r.x() - s_virtualScreenGeometry.x(), s_virtualScreenGeometry.height() + s_virtualScreenGeometry.y() - r.y() - r.height(), r.width(), r.height()); | 2127 | glScissor((r.x() - s_virtualScreenGeometry.x()) * s_virtualScreenScale, | ||
2128 | (s_virtualScreenGeometry.height() + s_virtualScreenGeometry.y() - r.y() - r.height()) * s_virtualScreenScale, | ||||
2129 | r.width() * s_virtualScreenScale, | ||||
2130 | r.height() * s_virtualScreenScale); | ||||
kpiwowarski: `+ s_virtualScreenGeometry.y()` | |||||
2127 | glDrawElementsBaseVertex(GL_TRIANGLES, count, GL_UNSIGNED_SHORT, nullptr, first); | 2131 | glDrawElementsBaseVertex(GL_TRIANGLES, count, GL_UNSIGNED_SHORT, nullptr, first); | ||
2128 | } | 2132 | } | ||
2129 | } | 2133 | } | ||
2130 | return; | 2134 | return; | ||
2131 | } | 2135 | } | ||
2132 | 2136 | | |||
2133 | if (!hardwareClipping) { | 2137 | if (!hardwareClipping) { | ||
2134 | glDrawArrays(primitiveMode, first, count); | 2138 | glDrawArrays(primitiveMode, first, count); | ||
2135 | } else { | 2139 | } else { | ||
2136 | // Clip using scissoring | 2140 | // Clip using scissoring | ||
2137 | foreach (const QRect &r, region.rects()) { | 2141 | foreach (const QRect &r, region.rects()) { | ||
2138 | glScissor(r.x() - s_virtualScreenGeometry.x(), s_virtualScreenGeometry.height() + s_virtualScreenGeometry.y() - r.y() - r.height(), r.width(), r.height()); | 2142 | glScissor((r.x() - s_virtualScreenGeometry.x()) * s_virtualScreenScale, | ||
2143 | (s_virtualScreenGeometry.height() + s_virtualScreenGeometry.y() - r.y() - r.height()) * s_virtualScreenScale, | ||||
kpiwowarski: `+ s_virtualScreenGeometry.y()` | |||||
2144 | r.width() * s_virtualScreenScale, | ||||
2145 | r.height() * s_virtualScreenScale); | ||||
2139 | glDrawArrays(primitiveMode, first, count); | 2146 | glDrawArrays(primitiveMode, first, count); | ||
2140 | } | 2147 | } | ||
2141 | } | 2148 | } | ||
2142 | } | 2149 | } | ||
2143 | 2150 | | |||
2144 | bool GLVertexBuffer::supportsIndexedQuads() | 2151 | bool GLVertexBuffer::supportsIndexedQuads() | ||
2145 | { | 2152 | { | ||
2146 | return GLVertexBufferPrivate::supportsIndexedQuads; | 2153 | return GLVertexBufferPrivate::supportsIndexedQuads; | ||
▲ Show 20 Lines • Show All 117 Lines • Show Last 20 Lines |
+ s_virtualScreenGeometry.y()