diff options
author | Paul Lemire <paul.lemire.ecortex@kdab.com> | 2014-12-30 15:43:48 +0100 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2014-12-31 11:23:55 +0100 |
commit | c5891b2a67e539760887d8c0476ea7aac521cdf2 (patch) | |
tree | 25c58246b751814396bfe6076f2fa85b3d0a363d | |
parent | 3701990027d9e18bac2cfbb8c536287d2dcc7bd8 (diff) |
bigscene-cpp: use QPhongMaterial which reduces code size
Change-Id: I18beff0430a13f40112adf1c026949a59774e0ee
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
-rw-r--r-- | examples/bigscene-cpp/main.cpp | 34 |
1 files changed, 6 insertions, 28 deletions
diff --git a/examples/bigscene-cpp/main.cpp b/examples/bigscene-cpp/main.cpp index 7050b3dc1..1c5b440d8 100644 --- a/examples/bigscene-cpp/main.cpp +++ b/examples/bigscene-cpp/main.cpp @@ -64,6 +64,7 @@ #include <Qt3DRenderer/QCameraSelector> #include <Qt3DRenderer/QTechniqueFilter> #include <Qt3DRenderer/QOpenGLFilter> +#include <Qt3DRenderer/QPhongMaterial> #include <qmath.h> using namespace Qt3D; @@ -103,26 +104,6 @@ int main(int ac, char **av) frameGraph->setActiveFrameGraph(techniqueFilter); root->addComponent(frameGraph); - QShaderProgram *shader = new QShaderProgram(); - shader->setVertexShaderCode(QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/shaders/diffuse.vert")))); - shader->setFragmentShaderCode(QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/shaders/diffuse.frag")))); - - QRenderPass *renderPass = new QRenderPass(); - renderPass->setShaderProgram(shader); - - QTechnique *technique = new QTechnique(); - technique->openGLFilter()->setApi(Qt3D::QOpenGLFilter::Desktop); - technique->openGLFilter()->setMajorVersion(3); - technique->openGLFilter()->setMinorVersion(1); - technique->openGLFilter()->setProfile(Qt3D::QOpenGLFilter::Core); - technique->addPass(renderPass); - - QEffect *effect = new QEffect(); - QParameter* lightPos = new QParameter(QStringLiteral("lightPosition"), QVector4D(10.0f, 10.0f, 0.0f, 1.0f)); - QParameter* lightIntensity = new QParameter(QStringLiteral("lightIntensity"), QVector3D(0.5f, 0.5f, 0.5f)); - effect->addParameter(lightPos); - effect->addParameter(lightIntensity); - effect->addTechnique(technique); const float radius = 100.0f; const int max = 1000; @@ -135,8 +116,7 @@ int main(int ac, char **av) QRotateTransform *rotateX = new QRotateTransform(); QRotateTransform *rotateZ = new QRotateTransform(); QCylinderMesh *mesh = new QCylinderMesh(); - QMaterial *material = new QMaterial(); - + QPhongMaterial *material = new QPhongMaterial(); mesh->setRings(50.0f); mesh->setSlices(30.0f); mesh->setRadius(2.5f); @@ -144,12 +124,10 @@ int main(int ac, char **av) const float angle = M_PI * 2.0f * i * det * 10.; - QParameter *diffuseColorParameter = new QParameter(QStringLiteral("kd"), QVector3D(cosf(angle), 0.3f, sinf(angle))); - QParameter* ambientColorParameter = new QParameter(QStringLiteral("ka"), QVector3D(cosf(angle), sinf(angle), 0.5f)); - - material->setEffect(effect); - material->addParameter(diffuseColorParameter); - material->addParameter(ambientColorParameter); + material->setDiffuse(QColor(fabs(cosf(angle)) * 255, 204, 75)); + material->setAmbient(Qt::gray); + material->setSpecular(Qt::white); + material->setShininess(150.0f); translation->setTranslation(QVector3D(radius * cos(angle), 200.* i * det, radius * sin(angle))); rotateX->setAxis(QVector3D(1.0f, 0.0f, 0.0f)); |