2011-01-02 6 views

答えて

2

基本的な違いは、glTexCoordPointerとglVertexPointer関数への入力はすぐには使用されないということです。 glDrawArrays、glDrawElements。

アレイはすぐには使用されないため、これらの関数に送信される配列へのポインタは、描画ルーチンがアクセスするのに十分な長さを保つ必要があります。データはネイティブヒープ上になければなりません。そうしないと、データが削除されていなくてもガベージコレクタは元のネイティブポインタを移動できます。ネイティブヒープ上のポインタを取得するには、Bufferオブジェクト内にデータをラップする必要があります。

glTexParameterivのような関数は、すぐに渡す配列の値を使用するため、呼び出された関数の下からポインタが移動する心配がなく、ネイティブヒープ上にポインタを置く必要はありません。

glTexCoordPointerとネイティブコードのフレンドを使用している場合は、glDraw関数を呼び出した後まで、送信するポインタを保持する必要があります。ネイティブコードでは、ポインタをオブジェクトにラップする必要はありませんが、手動でヒープ割り当てを管理する必要があるという欠点があります。

+0

素晴らしい!有益な説明をありがとう! – dimsuz

関連する問題