QBuilder と QGeometryData を使用してテクスチャを単純な形状にレンダリングしようとしていますが、テクスチャを表示できません。何が間違っていますか?
テクスチャを構築し、generateTextureCoordinates を使用してテクスチャ座標をマッピングしようとする QGLSceneNode を作成しました。
手動でテクスチャ座標をマッピングする編集 は機能しているようですが、generateTextureCoordinates は機能するはずです。
[私のクラスは QGLView の子です]
vtkQtViewer::vtkQtViewer(QWidget *parent) :
QGLView(parent), scene(new QGLSceneNode(this))
{
// in the constructor construct a builder on the stack
QGLBuilder builder;
QGeometryData triangle;
QVector3D a(2, 2, 0);
QVector3D b(-2, 2, 0);
QVector3D c(2, -2, 0);
QVector3D d(-2, -2, 0);
triangle.appendVertex(a,b,c);
triangle.appendVertex(b,d,c);
triangle.generateTextureCoordinates();
// When adding geometry,
//QGLBuilder automatically creates lighting normals
builder << triangle;
// obtain the scene from the builder
QGLSceneNode* can = builder.finalizedSceneNode();
// apply effects at app initialization time
QGLMaterial *mat = new QGLMaterial;
mat->setDiffuseColor(Qt::red);
QUrl url;
url.setPath(QLatin1String("qtlogo.png"));
url.setScheme(QLatin1String("file"));
mat->setTextureUrl(url);
can->setMaterial(mat);
scene->addNode(can);
}
vtkQtViewer::~vtkQtViewer()
{
delete scene;
}
void vtkQtViewer::initializeGL(QGLPainter *painter)
{
painter->setStandardEffect(QGL::LitDecalTexture2D);
}
void vtkQtViewer::paintGL(QGLPainter *painter)
{
scene->draw(painter);
}}