私はあなたのためにうまく動作し、できるだけVBOにあなたのvertデータを結合バッファーサイズを見つけるだろう。あなたのターゲットハードウェアは本当にこれを指示するものなので、別の番号で遊ぶのが最善です。
モデルをレンダリングに実際に使用するVBOのオフセットを参照するために、いくつかのクラスを使用します。たとえば、あなたは箱と車を持っています。
class MeshManager
{
public:
int loadMesh(const Mesh * mesh)
{
//load the mesh
//Add it to some current VBO or manage the creation of VBOs better.
ManagedMesh managedMesh(theVao, theVbo, theOffset, theLength, theType, theIdentifier);
theIdentifier++;
}
private:
std::map<std::string, ManagedMesh> meshMap;
int theIdentifier;
}
class Renderer
{
public:
void render(int meshId, Vector3f translation, Vector3f rotation);
}
int main(int argc, char** argv)
{
MeshManager meshManager;
Model model("mymodel.obj");
const Mesh * meshes = model.getMeshes();
int meshCount = model.getMeshCount();
for(int i=0; i<meshCount; i++)
{
meshManager.loadMesh(mesh);
}
model.freeMeshes();
}
何かの並べ替え。明らかに私はそれらの読み込まれたメッシュIDを格納していませんが、私はあなたが画像を取得すると思います。私は専門家ではありませんが、これは私がそれについてどうやって行くかの大まかな例です。また、バッチレンダリングを可能な限り試してみてください。レンダリングをソートするには、1)ロードする必要のあるVBO、2)ロードする必要があるマテリアルをソートします。 GPUのオン/オフを常にスワッピングするのはコストがかかります。試行錯誤はゲームの名前です(ゲームはプログラミングです)。