タグ付けされた質問 「instancing」

4
すべてにインスタンス化を使用しますか?
インスタンス化は、同じメッシュの複数のコピーを一度にレンダリングするとき(大幅に)パフォーマンスを(大幅に)向上させます。しかし、1回の描画呼び出しで正確に1つのコピーをレンダリングする場合、オーバーヘッドはどれくらいありますか?エンジンによってレンダリングされたすべてのジオメトリにインスタンス化を使用するのは良い考えですか、悪い考えでしょうか? 編集:FPSゲームを作成しているとしましょう。ほとんどのオブジェクトには、ナイフ、銃、機関銃、建物、電波塔という1つのインスタンスしかありません。しかし、複数のインスタンスを持つオブジェクトもあります:木(例:数百のインスタンスを持つ3種類の木)、草など...つまり、1つのインスタンスオブジェクトを「伝統的な」方法でレンダリングするのではなく、インスタンス化を使用して草を作成する場合、インスタンス化を使用してすべてをレンダリングします。したがって、無線タワーにはインスタンスが1つしかなく(その情報はインスタンスデータバッファーに格納されます)、DrawInstanced()インスタンスカウントが等しいコールを使用してそのタワーをレンダリングします1。他のすべてのオブジェクトと同じです(もちろん、木や草には複数のインスタンスがあります)。 だから私の質問は次のとおりです。インスタンス化を使用してオブジェクトの単一インスタンスを描画するのは悪い考えですか?インスタンス化のオーバーヘッド(メモリおよびパフォーマンスの面)が大きすぎるのか、それともシングルインスタンスオブジェクトのレンダリングに望ましくないのですか?
16 mesh  instancing 

3
OpenGL Fast-Object Instancing Error
オブジェクトのセットをループしてそれらのオブジェクトのインスタンスをレンダリングするコードがいくつかあります。レンダリングする必要があるオブジェクトのリストはstd :: map>として保存されます。MeshResourceクラスのオブジェクトには実際のデータを含む頂点とインデックスが含まれ、classMeshRendererのオブジェクトはメッシュが配置される空間内のポイントを定義しますでレンダリングされます。 私のレンダリングコードは次のとおりです。 glDisable(GL_BLEND); glEnable(GL_CULL_FACE); glDepthMask(GL_TRUE); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glEnable(GL_DEPTH_TEST); for (std::map<MeshResource*, std::vector<MeshRenderer*> >::iterator it = renderables.begin(); it != renderables.end(); it++) { it->first->setupBeforeRendering(); cout << "<"; for (unsigned long i =0; i < it->second.size(); i++) { //Pass in an identity matrix to the vertex shader- used here only for …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.