2011-12-16 12 views
1

私のゲームでは通常、2Dテクスチャを描画するのにGL_TEXTURE_RECTANGLE_EXTが使用されます。しかし、これはすべてのハードウェアでサポートされていないため、GL_TEXTURE_2Dを動作させようとしています。私は描画された画像に一回GL_TEXTURE_2Dを使用するとOpenGLテクスチャが最初に白色を描画します

glTexParameteri(caps->extension, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 
glTexParameteri(caps->extension, GL_TEXTURE_MIN_FILTER, GL_LINEAR); 

を呼び出して開始したのではなく、1フレームにつき1回まで、最初はほとんどの画像は純粋な白を示しました。 (RECTANGLE_EXTを使用すると、フレームごとに一度離れることができ、正常に動作します)

さて、今度は画像が表示されます。問題はありますが、テクスチャが描かれた最初の段階では、一度白く塗ります。その後、彼らは適切に引き分けます。これにより、最初に画像が描画されるときに白い点滅が多く発生し、画像が再利用されるときに解決されます。これを引き起こす原因は何ですか?

私は「2の累乗」を同時に鳴らしているので、すべてのテクスチャは最初に作成されたときに最も近い2の累乗に丸められています。

+0

そして、最初にGL_TEXTURE_RECTANGLEを実際に使った奇妙な理由は...? –

答えて

1

誰かがこれをSDLフォーラムで回答しました。 msgstr "" "デフォルトでは、glTexParameteri()でGL_LINEARまたはGL_NEARESTを使用するように特に指示しない限り、OpenGLはミップマップを有効にします。 (つまり、ミップマップは使用されていますが、設定されていません)。

別のポスターが書き込みました: "技術的にOpenGLは、 )または自分のミップマッピングルーチン(私の選択は、Windows上のglu32.dllよりもはるかに速いですが)もちろん、これらのテクスチャ(または消費33%の無駄なメモリ)のミップマップも望んでいないので、エレガントでglTexParameterの設定を変更するだけです。 "

0

作業が必要な状態は、最初のフレームが描画された後にのみ設定されることを意味します。 NeHeのテクスチャチュートリアルと、それを適切に行う方法を見てみましょう。

関連する問題