多くの変更が必要な 3D モデルとアプリケーションをやり取りさせる方法を考えていました。たとえば、色、テクスチャ ID、位置、さらには法線をアプリケーション自体から自由に変更できるようにしたいと考えています。モデルが変更されるたびに、またはフレームごとにモデル(glBufferData)を再アップロードすることを考えましたが、それは一種のメモリ集約型のようです。
また、クラスがホスト メモリ内のバッファの一部にアクセスできるようにする方法がよくわかりません。例: 属性を持ち、いつでも属性を変更できるクラス「Shape」、バッファーに含まれるものを変更します。このため、どこから始めればよいかわかりません。GPU に送信できないこれらのクラスには、さらに多くの属性が必要であることを指摘する必要があります。私が調べることができるヒント/テクニックはありますか?
編集: Buffer Object Streamingに関するこの記事を見つけ、glBufferData と glBufferSubData を使用して GPU にデータをストリーミングすることについてかなり快適に感じました。ただし、バッファ内のオブジェクトを定義する良い方法を見つけるのにまだ苦労しています。
CPUメモリ内の配列、オフセット、および長さを含む独自のクラス「SubArray」を作成することを検討しました。インデックスを検証し、正しい範囲にない場合は例外をスローするインデクサーがありますが、単純なオブジェクトのブロック サイズを変更 (頂点を追加) できないため、このメソッドを使用するのはあまり快適ではありません。