MNE-CPP 0.1.9
A Framework for Electrophysiology
Loading...
Searching...
No Matches
shownormalsmaterial.cpp
Go to the documentation of this file.
1//=============================================================================================================
35//=============================================================================================================
36// INCLUDES
37//=============================================================================================================
38
39#include "shownormalsmaterial.h"
40
41//=============================================================================================================
42// QT INCLUDES
43//=============================================================================================================
44
45#include <QColor>
46#include <Qt3DRender/qeffect.h>
47#include <Qt3DRender/qtechnique.h>
48#include <Qt3DRender/qshaderprogram.h>
49#include <Qt3DRender/qparameter.h>
50#include <Qt3DRender/qrenderpass.h>
51#include <QFilterKey>
52#include <Qt3DRender/qgraphicsapifilter.h>
53
54#include <QUrl>
55#include <QVector3D>
56#include <QVector4D>
57
58//=============================================================================================================
59// USED NAMESPACES
60//=============================================================================================================
61
62using namespace DISP3DLIB;
63using namespace Qt3DRender;
64
65//=============================================================================================================
66// DEFINE MEMBER METHODS
67//=============================================================================================================
68
70: QMaterial(parent)
71, m_pVertexEffect(new QEffect())
72, m_pVertexGL3Technique(new QTechnique())
73, m_pVertexGL3RenderPass(new QRenderPass())
74, m_pVertexGL3Shader(new QShaderProgram())
75, m_pFilterKey(new QFilterKey)
76{
77 this->init();
78}
79
80//=============================================================================================================
81
82void ShowNormalsMaterial::init()
83{
84 //Set shader
85 m_pVertexGL3Shader->setVertexShaderCode(QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/engine/model/materials/shaders/gl3/shownormals.vert"))));
86 m_pVertexGL3Shader->setGeometryShaderCode(QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/engine/model/materials/shaders/gl3/shownormals.geom"))));
87 m_pVertexGL3Shader->setFragmentShaderCode(QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/engine/model/materials/shaders/gl3/shownormals.frag"))));
88 m_pVertexGL3RenderPass->setShaderProgram(m_pVertexGL3Shader);
89
90 //Set OpenGL version - This material can only be used with opengl 4.0 or higher since it is using geometry shaders
91 m_pVertexGL3Technique->graphicsApiFilter()->setApi(QGraphicsApiFilter::OpenGL);
92 m_pVertexGL3Technique->graphicsApiFilter()->setMajorVersion(3);
93 m_pVertexGL3Technique->graphicsApiFilter()->setMinorVersion(2);
94 m_pVertexGL3Technique->graphicsApiFilter()->setProfile(QGraphicsApiFilter::CoreProfile);
95
96 m_pFilterKey->setName(QStringLiteral("renderingStyle"));
97 m_pFilterKey->setValue(QStringLiteral("forwardTransparent"));
98 m_pVertexGL3Technique->addFilterKey(m_pFilterKey);
99
100 m_pVertexGL3Technique->addRenderPass(m_pVertexGL3RenderPass);
101
102 m_pVertexEffect->addTechnique(m_pVertexGL3Technique);
103
104 this->setEffect(m_pVertexEffect);
105}
ShowNormalsMaterial class declaration.
ShowNormalsMaterial(Qt3DCore::QNode *parent=0)