[Interest] Qt3D texture from memory (QImage)

Klos, Andreas andreas.klos at izfp.fraunhofer.de
Tue Oct 18 15:55:03 CEST 2016


Ok thanks, i fixed it by my self.

Best Regards
Andreas

Von: Interest [mailto:interest-bounces+andreas.klos=izfp.fraunhofer.de at qt-project.org] Im Auftrag von Klos, Andreas
Gesendet: 18 October 2016 13:57
An: interest at qt-project.org
Betreff: [Interest] Qt3D texture from memory (QImage)

Dear great Qt-Comunity,

I try to use a texture on a plain geometry. For this purpose i followed the instructions in this post:
http://interest.qt-project.narkive.com/cKrvD9nr/synchronous-update-of-qt3d-texture-data
and this bug report
https://bugreports.qt.io/browse/QTBUG-54311
and the comments in QabstractTextureImage.cpp file

However, there is only an empty mesh displayed l ike shown in the attached screenshot. I also receive a warning message which can be obtained by the cmd.

Here are my code snippets:

#ifndef TEXTUREIMAGE_H
#define TEXTUREIMAGE_H

#include <Qt3DRender>
#include "ImageTextureDataFunctor.h"

class TextureImage :public Qt3DRender::QAbstractTextureImage
{
public:
       TextureImage(Qt3DRender::QTextureImageDataPtr _textureImageDataPtr, Qt3DCore::QNode* parent = nullptr);

       Qt3DRender::QTextureImageDataGeneratorPtr dataGenerator()const;

private:
       Qt3DRender::QTextureImageDataPtr textureImageDataPtr;
};

#include "TextureImage.h"

TextureImage::TextureImage(Qt3DRender::QTextureImageDataPtr _textureImageDataPtr, Qt3DCore::QNode*  parent)
       :QAbstractTextureImage(parent)
       , textureImageDataPtr(_textureImageDataPtr)
{

}

Qt3DRender::QTextureImageDataGeneratorPtr TextureImage::dataGenerator()const{
       return Qt3DRender::QTextureImageDataGeneratorPtr(new ImageTextureDataFunctor(textureImageDataPtr));
}

#ifndef IMAGETEXTUREDATAFUNCTOR_H
#define      IMAGETEXTUREDATAFUNCTOR_H

#include <Qt3DRender>

class ImageTextureDataFunctor :public Qt3DRender::QTextureImageDataGenerator
{
public:
       ImageTextureDataFunctor(Qt3DRender::QTextureImageDataPtr _textureImageDataPtr);

       inline Qt3DRender::QTextureImageDataPtr operator ()() Q_DECL_FINAL{ return textureImageDataPtr; }

             inline bool operator ==(const QTextureImageDataGenerator &other) const Q_DECL_FINAL
       {
             const ImageTextureDataFunctor *otherFunctor = functor_cast<ImageTextureDataFunctor>(&other);
             return (otherFunctor != Q_NULLPTR && otherFunctor->textureImageDataPtr == textureImageDataPtr);
       }

             QT3D_FUNCTOR(ImageTextureDataFunctor)
private:
       Qt3DRender::QTextureImageDataPtr textureImageDataPtr;
};

#endif // !IMAGETEXTUREDATAFUNCTOR_H

#include "ImageTextureDataFunctor.h"

ImageTextureDataFunctor::ImageTextureDataFunctor(Qt3DRender::QTextureImageDataPtr _textureImageDataPtr)
       :Qt3DRender::QTextureImageDataGenerator()
       , textureImageDataPtr(_textureImageDataPtr)
{

}

I would be very grateful, if somebody can give me a hint to solve my issue.
Best Regards,
Andreas
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20161018/0ca7e9a7/attachment.html>


More information about the Interest mailing list