0
createTexturedQuadGeometry에 의해 생성 된 쿼드 기하학 객체에 이미지에서로드하는 텍스처를 사용하여 텍스처 맵을 만들려고합니다. 그런 다음이 드로어 블을 노드에 추가하고 해당 노드를 루트에 추가하고 계층 구조를 렌더링합니다.OpenScenegraph : 텍스처 매핑 쿼드
아래 코드는 내가하는 방법입니다. 코드가 컴파일되고 실행되지만 지정된 이미지 대신 빈 검은 색 화면 만 표시됩니다. 누군가 잘못 지적 할 수 있습니까?
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();
}