Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Use QDiffuseSpecularMaterial instead of QDiffuseMapMaterial on qt 5.10+
QDiffuseMapMaterial is deprecated
  • Loading branch information
nyalldawson committed Dec 12, 2020
1 parent 515d282 commit 5deda1f
Showing 1 changed file with 25 additions and 2 deletions.
27 changes: 25 additions & 2 deletions src/3d/materials/qgsphongtexturedmaterialsettings.cpp
Expand Up @@ -19,7 +19,11 @@
#include "qgsapplication.h"
#include "qgsimagecache.h"
#include "qgsimagetexture.h"
#if QT_VERSION < QT_VERSION_CHECK(5, 10, 0)
#include <Qt3DExtras/QDiffuseMapMaterial>
#else
#include <Qt3DExtras/QDiffuseSpecularMaterial>
#endif
#include <Qt3DExtras/QPhongMaterial>
#include <Qt3DRender/QPaintedTextureImage>
#include <Qt3DRender/QTexture>
Expand Down Expand Up @@ -108,14 +112,33 @@ Qt3DRender::QMaterial *QgsPhongTexturedMaterialSettings::toMaterial( QgsMaterial

if ( !textureSourceImage.isNull() )
{
Qt3DExtras::QDiffuseMapMaterial *material = new Qt3DExtras::QDiffuseMapMaterial;

QgsImageTexture *textureImage = new QgsImageTexture( textureSourceImage );
#if QT_VERSION < QT_VERSION_CHECK(5, 10, 0)
Qt3DExtras::QDiffuseMapMaterial *material = new Qt3DExtras::QDiffuseMapMaterial;
material->diffuse()->addTextureImage( textureImage );

material->diffuse()->wrapMode()->setX( Qt3DRender::QTextureWrapMode::Repeat );
material->diffuse()->wrapMode()->setY( Qt3DRender::QTextureWrapMode::Repeat );
material->diffuse()->wrapMode()->setZ( Qt3DRender::QTextureWrapMode::Repeat );
#else
Qt3DExtras::QDiffuseSpecularMaterial *material = new Qt3DExtras::QDiffuseSpecularMaterial;

Qt3DRender::QTexture2D *texture = new Qt3DRender::QTexture2D();
texture->addTextureImage( textureImage );

texture->wrapMode()->setX( Qt3DRender::QTextureWrapMode::Repeat );
texture->wrapMode()->setY( Qt3DRender::QTextureWrapMode::Repeat );
texture->wrapMode()->setZ( Qt3DRender::QTextureWrapMode::Repeat );

texture->setSamples( 4 );

texture->setGenerateMipMaps( true );
texture->setMagnificationFilter( Qt3DRender::QTexture2D::Linear );
texture->setMinificationFilter( Qt3DRender::QTexture2D::Linear );

material->setDiffuse( QVariant::fromValue( texture ) );
#endif

material->setSpecular( mSpecular );
material->setAmbient( mAmbient );
material->setShininess( mShininess );
Expand Down

0 comments on commit 5deda1f

Please sign in to comment.