Scanframe Modular Application 0.1.0
Loading...
Searching...
No Matches
DemoRenderer.h
Go to the documentation of this file.
1#pragma once
3#include <xgl/ShaderProgram.h>
4
5namespace sf::xgl
6{
7
9{
10 Q_OBJECT
11 Q_PROPERTY(QColor lightColor READ getLightColor WRITE setLightColor)
12 Q_PROPERTY(float cutoffAngle READ getCutoffAngle WRITE setCutoffAngle)
13 Q_PROPERTY(float ambientStrength READ getAmbientStrength WRITE setAmbientStrength)
14 Q_PROPERTY(float diffuseStrength READ getDiffuseStrength WRITE setDiffuseStrength)
15 Q_PROPERTY(float specularStrength READ getSpecularStrength WRITE setSpecularStrength)
16 Q_PROPERTY(float shininess READ getShininess WRITE setShininess)
17 Q_PROPERTY(FragmentProgram fragmentProgram READ getFragmentProgram WRITE setFragmentProgram)
18 Q_PROPERTY(int objectIndex READ getObjectIndex WRITE setObjectIndex)
19
20 public:
21 explicit DemoRenderer(OpenGLWidget* widget, ShaderProgram* sp);
22
23 ~DemoRenderer() override;
24
28 enum FragmentProgram : int
29 {
33 fpSpotlight = 1
34 };
35 Q_ENUM(FragmentProgram)
36
37 void start(int msecs);
38
39 void setIndexValue(int index, QVariant value) override;
40
41 SF_DECL_PROP_GS(QColor, LightColor)
42 SF_DECL_PROP_GS(float, CutoffAngle)
43 SF_DECL_PROP_GS(float, AmbientStrength)
44 SF_DECL_PROP_GS(float, DiffuseStrength)
45 SF_DECL_PROP_GS(float, SpecularStrength)
46 SF_DECL_PROP_GS(float, Shininess)
48 SF_DECL_PROP_GS(int, ObjectIndex)
49
50 protected:
51 void generate() override;
52
53 void paint() override;
54
55 void draw() override;
56
57 void timerEvent(QTimerEvent* event) override;
58
59 void changedProperty() override;
60
61 void notify(void*);
62
63 private:
64 struct Private;
65 Private* _p{nullptr};
66};
67
68}// namespace sf::xgl
Pure virtual class to implement rendering separated from the widget and makes the sf::OpenGLWidget th...
Definition OpenGLRenderer.h:12
Widget for rendering a OpenGHL scene.
Definition OpenGLWidget.h:30
Definition DemoRenderer.h:9
float ambientStrength
Definition DemoRenderer.h:13
void timerEvent(QTimerEvent *event) override
void paint() override
Called by from the render() method.
float diffuseStrength
Definition DemoRenderer.h:14
void generate() override
Called by setup() and (re-)generates the vertices for the drawn 3D-objects.
FragmentProgram
Enumeration of available shader inner programs passed to ShaderProgram::Uniform::uProgram uniform.
Definition DemoRenderer.h:29
@ fpPassthrough
Definition DemoRenderer.h:31
@ fpSpotlight
Definition DemoRenderer.h:33
float specularStrength
Definition DemoRenderer.h:15
FragmentProgram fragmentProgram
Definition DemoRenderer.h:17
float cutoffAngle
Definition DemoRenderer.h:12
float shininess
Definition DemoRenderer.h:16
QColor lightColor
Definition DemoRenderer.h:11
int objectIndex
Definition DemoRenderer.h:18
void draw() override
Called by from the render() method.
void setIndexValue(int index, QVariant value) override
Sets an arbitrary value on the derived- or subclass.
void start(int msecs)
void changedProperty() override
Called by sf::OpenGLWidget when a property has changed.
Shader program having a default vertex and fragment shader.
Definition ShaderProgram.h:13
#define SF_DECL_PROP_GS(Type, Name)
Declares unreferenced getter and unreferenced setter for a property.
Definition misc/qt/Macros.h:8
Definition DemoRenderer.h:6