はい、あるスレッドでオブジェクトを作成し、別のスレッドで使用することができます。これを行うには、新しいGLコンテキストが必要です。
そうは言っても、2つの懸念があります。
まず、「PBOの割り当て」の意味によって異なります。フレームの途中でバッファオブジェクトを割り当てないでください。必要なすべてのバッファを事前に割り当てる必要があります。それらを使用する時が来たら、あなたは単にあなたが持っているものを使うことができます。
「割り当て」とglBufferData
は、以前に使用されたものとは異なるサイズまたはドライバーヒントを使用して、以前に割り当てられたバッファーを呼び出すことを意味します。または、とを使用glGenBuffers
しglDeleteBuffers
て。これらのどちらもフレーム内で発生するべきではありません。
次に、バッファを無効にしても「ラグスパイク」が発生することはありません。「無効化」とはglBufferData
、同じサイズと使用法のヒントを使用して、またはビットを使用しglMapBufferRange
てバッファを再割り当てすることを意味しGL_INVALIDATE_BUFFER
ます。詳細については、バッファオブジェクトデータをストリーミングする方法についてこのページを参照してください。問題が発生している場合は、NVIDIAハードウェアを使用していて、間違ったバッファオブジェクトヒントを使用している可能性があります(つまり、STREAMを使用します)。