カスタムイメージをテクスチャとして持つQt3Dでエンティティを作成したいとします。私はQPaintedTextureImageを見つけました(詳細はQt 5.9バージョンへのリンクがあります。ist doc for 5.8)。これはQPainterで書かれていますが、わかりません。 まず、エンティティが次のように見えると思います。Qt3DのQPaintedTextureImage(Qt 5.8)
[編集]:コードが編集され、今すぐ機能します!
planeEntity = new Qt3DCore::QEntity(rootEntity);
planeMesh = new Qt3DExtras::QPlaneMesh;
planeMesh->setWidth(2);
planeMesh->setHeight(2);
image = new TextureImage; //see below
image->setSize(QSize(100,100));
painter = new QPainter;
image->paint(painter)
planeMaterial = new Qt3DExtras::QDiffuseMapMaterial;
planeMaterial->diffuse()->addTextureImage(image);
planeEntity->addComponent(planeMesh);
planeEntity->addComponent(planeMaterial);
TextureImageは、ペイント機能を持つサブクラス化QPaintedTextureImageです:私はちょうど大きな円を描きたい場合は
class TextureImage : public Qt3DRender::QPaintedTextureImage
{
public:
void paint(QPainter* painter);
};
何の機能をペイントするために渡されたQPainterのは、塗料の実装で行う必要がありません飛行機に入る?
[編集]実装:
void TextureImage::paint(QPainter* painter)
{
//hardcoded values because there was no device()->width/heigth
painter->fillRect(0, 0, 100, 100, QColor(255, 255, 255));
/* Set pen and brush to whatever you want. */
painter->setPen(QPen(QBrush(QColor(255, 0, 255)) ,10));
painter->setBrush(QColor(0, 0, 255));
/*
* Draw a circle (or an ellipse -- the outcome depends very much on
* the aspect ratio of the bounding rectangle amongst other things).
*/
painter->drawEllipse(0, 0, 100, 100);
}
それは小さな変更で働いていた、ありがとう! – user7825011