2

コードの最初にいくつかのテクスチャを設定しました (C)。各テクスチャは (エラーなしで) 正しく生成され、後で使用するためにテクスチャ名を画像構造に Gluint として保存します。プログラムの最後に、GLuint が GLdeleteTextures() に返され、プログラムが終了します。

問題は、GLDeleteTextures() を最初に使用しようとしたときにエラーが発生し続けることです。それ以降の GLDeleteTextures() の呼び出しでは、エラーは発生しません。

エラー (gluErrorString から) は「無効な列挙型」を示しています。

追加情報。すべてのテクスチャは、glBindTexture(GL_TEXTURE_2D, NULL) を呼び出して削除する前にアンバインドされます。すべてのテクスチャ名 (GLuint) は作成時に検証され、削除時に使用される名前と同じです。削除するときのテクスチャの順序は関係ありません。問題は削除の最初の呼び出しです。

現在の回避策。最初のテクスチャで glDeleteTextures() を繰り返すと、たとえば...

glDeleteTextures(1,&MyImage->texName);   // Will produce 'invalid enumerant'

glDeleteTextures(1,&MyImage->texName);   // This time it will work!

2 回目の削除後に新しいテクスチャを生成し、テクスチャ名を比較して、上記のコードを再確認しました。2 回目の呼び出しの後、テクスチャは実際に削除され、システムに正しく戻されます。

私は Red Book を持っていますが、テクスチャの削除については少しあいまいです。テクスチャを正しく削除するために実行する必要がある一連の明示的な手順はありますか?

4

1 に答える 1

0

障害はglDeleteTextures()ではなく、 から来ていましたglEnable(GL_ALPHA)

于 2012-10-19T10:38:35.870 に答える