KWin
Loading...
Searching...
No Matches
src
scene
itemrenderer_opengl.h
Go to the documentation of this file.
1
/*
2
SPDX-FileCopyrightText: 2022 Vlad Zahorodnii <vlad.zahorodnii@kde.org>
3
4
SPDX-License-Identifier: GPL-2.0-or-later
5
*/
6
7
#pragma once
8
9
#include "
opengl/glutils.h
"
10
#include "
platformsupport/scenes/opengl/openglsurfacetexture.h
"
11
#include "
scene/itemrenderer.h
"
12
13
namespace
KWin
14
{
15
16
class
KWIN_EXPORT
ItemRendererOpenGL
:
public
ItemRenderer
17
{
18
public
:
19
struct
RenderNode
20
{
21
std::variant<GLTexture *, OpenGLSurfaceContents>
texture
;
22
RenderGeometry
geometry
;
23
QMatrix4x4
transformMatrix
;
24
int
firstVertex = 0;
25
int
vertexCount = 0;
26
qreal opacity = 1;
27
bool
hasAlpha =
false
;
28
TextureCoordinateType
coordinateType =
UnnormalizedCoordinates
;
29
qreal scale = 1.0;
30
ColorDescription
colorDescription
;
31
};
32
33
struct
RenderContext
34
{
35
QList<RenderNode>
renderNodes
;
36
QStack<QMatrix4x4>
transformStack
;
37
QStack<qreal>
opacityStack
;
38
const
QMatrix4x4
projectionMatrix
;
39
const
QRegion
clip
;
40
const
bool
hardwareClipping
;
41
const
qreal
renderTargetScale
;
42
};
43
44
ItemRendererOpenGL
();
45
46
void
beginFrame(
const
RenderTarget
&renderTarget,
const
RenderViewport
&viewport)
override
;
47
void
endFrame()
override
;
48
49
void
renderBackground(
const
RenderTarget
&renderTarget,
const
RenderViewport
&viewport,
const
QRegion ®ion)
override
;
50
void
renderItem(
const
RenderTarget
&renderTarget,
const
RenderViewport
&viewport,
Item
*item,
int
mask,
const
QRegion ®ion,
const
WindowPaintData
&data)
override
;
51
52
std::unique_ptr<ImageItem> createImageItem(
Scene
*scene,
Item
*parent =
nullptr
)
override
;
53
54
private
:
55
QVector4D modulate(
float
opacity,
float
brightness)
const
;
56
void
setBlendEnabled(
bool
enabled);
57
void
createRenderNode(
Item
*item,
RenderContext
*context);
58
void
visualizeFractional(
const
RenderViewport
&viewport,
const
QRegion ®ion,
const
RenderContext
&renderContext);
59
60
bool
m_blendingEnabled =
false
;
61
62
struct
63
{
64
bool
fractionalEnabled =
false
;
65
std::unique_ptr<GLShader>
fractionalShader
;
66
} m_debug;
67
};
68
69
}
// namespace KWin
KWin::ColorDescription
Definition
colorspace.h:103
KWin::Item
Definition
item.h:30
KWin::ItemRenderer
Definition
itemrenderer.h:27
KWin::ItemRendererOpenGL
Definition
itemrenderer_opengl.h:17
KWin::ItemRendererOpenGL::fractionalShader
std::unique_ptr< GLShader > fractionalShader
Definition
itemrenderer_opengl.h:65
KWin::RenderGeometry
Definition
itemgeometry.h:97
KWin::RenderTarget
Definition
rendertarget.h:21
KWin::RenderViewport
Definition
renderviewport.h:21
KWin::Scene
Definition
scene.h:44
KWin::WindowPaintData
Definition
effect.h:300
glutils.h
itemrenderer.h
KWin
Definition
activation_test.cpp:20
KWin::TextureCoordinateType
TextureCoordinateType
Definition
gltexture.h:34
KWin::UnnormalizedCoordinates
@ UnnormalizedCoordinates
Definition
gltexture.h:36
openglsurfacetexture.h
KWin::ItemRendererOpenGL::RenderContext
Definition
itemrenderer_opengl.h:34
KWin::ItemRendererOpenGL::RenderContext::projectionMatrix
const QMatrix4x4 projectionMatrix
Definition
itemrenderer_opengl.h:38
KWin::ItemRendererOpenGL::RenderContext::transformStack
QStack< QMatrix4x4 > transformStack
Definition
itemrenderer_opengl.h:36
KWin::ItemRendererOpenGL::RenderContext::renderTargetScale
const qreal renderTargetScale
Definition
itemrenderer_opengl.h:41
KWin::ItemRendererOpenGL::RenderContext::renderNodes
QList< RenderNode > renderNodes
Definition
itemrenderer_opengl.h:35
KWin::ItemRendererOpenGL::RenderContext::hardwareClipping
const bool hardwareClipping
Definition
itemrenderer_opengl.h:40
KWin::ItemRendererOpenGL::RenderContext::opacityStack
QStack< qreal > opacityStack
Definition
itemrenderer_opengl.h:37
KWin::ItemRendererOpenGL::RenderContext::clip
const QRegion clip
Definition
itemrenderer_opengl.h:39
KWin::ItemRendererOpenGL::RenderNode
Definition
itemrenderer_opengl.h:20
KWin::ItemRendererOpenGL::RenderNode::transformMatrix
QMatrix4x4 transformMatrix
Definition
itemrenderer_opengl.h:23
KWin::ItemRendererOpenGL::RenderNode::colorDescription
ColorDescription colorDescription
Definition
itemrenderer_opengl.h:30
KWin::ItemRendererOpenGL::RenderNode::texture
std::variant< GLTexture *, OpenGLSurfaceContents > texture
Definition
itemrenderer_opengl.h:21
KWin::ItemRendererOpenGL::RenderNode::geometry
RenderGeometry geometry
Definition
itemrenderer_opengl.h:22
Generated on Sat Feb 17 2024 01:42:10 for KWin by
1.10.0