glGenTextures()
を使用して、未使用のテクスチャIDを取得する代わりに。ランダムに番号を選択することはできますか、たとえば、99999とそれを使用しますか?ランダムなテクスチャIDを使用しても構いませんか?
私は、もちろん、クエリ:
glIsTexture(m_texture)
、それは先に進む前に偽だことを確認してください。私はMac用の画像のスライドショーアプリを開発しています
:
はここにいくつかの背景です。スライドショーのプレビューは完璧です。スライドショーを保存するために、私はFBOにレンダリングしています。私はAGLコンテキストを作成し、glGenTextures()
でテクスチャをインスタンス化し、フレームバッファにレンダリングします。マイナーな問題を除いて、すべてうまくいっている。
スライドショーを保存してメインウィンドウに戻ると、すべての画像サムネイルが灰色になります。つまり、テクスチャはクリアされています。
私はそれを調べて、画像サムネイルとFBOテクスチャが何とか同じテクスチャIDを持っていることを発見しました。スライドショーの保存操作の最後にFBOテクスチャを削除すると、サムネイルテクスチャも失われます。私は保存中にAGLコンテキストがあり、メインUIには別のAGLコンテキストがあります。これは、おそらくCore Imageによってバックグラウンドで作成され、制御できません。
だから私のオプション、私は今それを見るようにである:
- FBOテクスチャを削除しません。
- メインUIがそれを使用しないことを期待して、ランダムに高いテクスチャIDを選択してください。
実際に、私はあなたがAGL OpenGLコンテキストを削除する場合に必ずテクスチャを削除する必要はないと読んでいます。 OpenGLコンテキストを削除すると、関連するすべてのテクスチャが自動的に削除されるためです。これは本当ですか?はいの場合、オプション1が理にかなっています。
ここで起こっている面白い事が実際には説明できないことが分かります。たとえば、イメージスライドショーを.mov
ファイルに保存した後、同じクラスで作成されたコンテキストを削除します。右にすると、別のコンテキストで作成されたテクスチャには影響しません。しかし、それは、私は真剣にそれを説明することはできません。
あなたの答えに感謝します。 OpenGL 1.4を3.2に完全にサポートする必要があるので、手動でテクスチャIDを割り当てることは疑問ではありません。 私のベスト・ベットは、テクスチャをまったく削除しないことです。 Btw私はあなたの答えに投票することができません。十分なポイントがないので。 –
@ニコル:あなたの2番目の段落はむしろ*不完全なようです*。 – genpfault
@genpfault:修正されました。ありがとう! –