Generate texture coordinates for limited NPOT support
Fixes rendering issues with R300 and similar GPUs. If the texture uses GL_TEXTURE_RECTANGLE_ARB as target the tex coordinates need to be adjusted. This at least fixes missing text on EffectFrames with graphicssystem native on R300. Hopefully more issues are resolved by the change. BUG: 269576 CCBUG: 282882 FIXED-IN: 4.7.3
This commit is contained in:
parent
15fc864c95
commit
fb2fbed035
1 changed files with 11 additions and 4 deletions
|
@ -280,11 +280,18 @@ void GLTexture::render(QRegion region, const QRect& rect)
|
|||
r.x() + rect.width(), r.y(),
|
||||
r.x() + rect.width(), r.y() + rect.height()
|
||||
};
|
||||
#ifdef KWIN_HAVE_OPENGLES
|
||||
const float texWidth = 1.0f;
|
||||
const float texHeight = 1.0f;
|
||||
#else
|
||||
const float texWidth = (target() == GL_TEXTURE_RECTANGLE_ARB) ? width() : 1.0f;
|
||||
const float texHeight = (target() == GL_TEXTURE_RECTANGLE_ARB) ? height() : 1.0f;
|
||||
#endif
|
||||
const float texcoords[ 4 * 2 ] = {
|
||||
0.0f, d->m_yInverted ? 0.0f : 1.0f, // y needs to be swapped (normalized coords)
|
||||
0.0f, d->m_yInverted ? 1.0f : 0.0f,
|
||||
1.0f, d->m_yInverted ? 0.0f : 1.0f,
|
||||
1.0f, d->m_yInverted ? 1.0f : 0.0f
|
||||
0.0f, d->m_yInverted ? 0.0f : texHeight, // y needs to be swapped (normalized coords)
|
||||
0.0f, d->m_yInverted ? texHeight : 0.0f,
|
||||
texWidth, d->m_yInverted ? 0.0f : texHeight,
|
||||
texWidth, d->m_yInverted ? texHeight : 0.0f
|
||||
};
|
||||
d->m_vbo->setData(4, 2, verts, texcoords);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue