1

createTexturedQuadGeometryによって生成されたクアッドジオメトリオブジェクトを、画像からロードしたテクスチャでテクスチャマッピングしようとしています。次に、このドローアブルをノードに追加し、そのノードをルートに追加して、階層をレンダリングします。

以下のコードは私がそれを行う方法です。コードはコンパイルされて実行されますが、指定された画像ではなく、空白の黒い画面しか表示されません。誰かが何が悪いのか指摘してもらえますか?

int main(int argc, char** argv) 
{
   osg::ref_ptr<osg::Group> root = new osg::Group;

    osg::ref_ptr<osg::Texture2D> testTexture = new osg::Texture2D;
    osg::ref_ptr<osg::Image> testImage = osgDB::readImageFile("testImage.png");
    assert(testImage.valid());
    int viewWidth = testImage->s();
    int viewHeight = testImage->t();
    testTexture->setImage(testImage);

    osg::ref_ptr<osg::Geometry> pictureQuad = osg::createTexturedQuadGeometry(osg::Vec3(0.0f,0.0f,0.0f),
                                                                              osg::Vec3(viewWidth,0.0f,0.0f),
                                                                              osg::Vec3(0.0f,0.0f,viewHeight),
                                                                              0.0f,
                                                                              viewWidth,
                                                                              viewHeight,
                                                                              1.0f);

    pictureQuad->getOrCreateStateSet()->setTextureAttributeAndModes(0, testTexture.get());
    pictureQuad->getOrCreateStateSet()->setMode(GL_DEPTH_TEST, osg::StateAttribute::ON);
    osg::ref_ptr<osg::Geode> textureHolder = new osg::Geode();
    textureHolder->addDrawable(pictureQuad);
    root->addChild(textureHolder);

    osgViewer::Viewer viewer;
    viewer.setSceneData(root.get());
    viewer.run();
} 
4

1 に答える 1

5

それで、私はたまたまエラーを見つけました。

createTexturedQuadGeometryは、正規化されたテクスチャ座標を想定しています。

それで、

osg::ref_ptr<osg::Geometry> pictureQuad = osg::createTexturedQuadGeometry(osg::Vec3(0.0f,0.0f,0.0f),
                                                                              osg::Vec3(viewWidth,0.0f,0.0f),
                                                                              osg::Vec3(0.0f,0.0f,viewHeight),
                                                                              0.0f,
                                                                              0.0f,
                                                                              1.0f,
                                                                              1.0f);

問題を解決します。

于 2013-02-18T13:36:55.693 に答える