私は2Dテクスチャを矩形領域に配置しました。これは動的テクスチャ画像(640x480)です。OpenSceneGraph Texture2D画像 "dirty" vs "setImage"パフォーマンス
私の画像データは、多くの場合、他のスレッド(各Nミリ秒)で更新されるtex = new osg::Texture2D;
tex->setDataVariance(osg::Object::DYNAMIC);
tex->setResizeNonPowerOfTwoHint(false);
tex->setFilter(osg::Texture2D::MIN_FILTER, osg::Texture2D::NEAREST);
tex->setFilter(osg::Texture2D::MAG_FILTER, osg::Texture2D::NEAREST);
tex->setImage(myImage);
:
myImage->setImage(
width,
height,
1,
3,
GL_BGR,
gl_data_size,
(BYTE *)newImageData,
osg::Image::AllocationMode::USE_MALLOC_FREE
);
そして、私はこれが最善の方法だと思った(ダーティ使用している場合は、その後、私は、レンダリングされた画像を更新したいですテクスチャに設定された画像上で、例えば、更新用に)
// Update callback
...
myImage->dirty();
...
私のパフォーマンスは、私が同じポインタを持つだけで画像の交換を使用する場合に比べて約7~8倍遅くなります。
OSGのドキュメンテーションとガードを読むと、正しい方法が「汚い」と思うようになります。しかしそれは極端に遅いです。私は何か勘違いするのか、自分のコードに間違いがあるのか分からないのですか?