0

テクスチャを使用して画像を表示する OpenGl プログラムがあります。表示する新しい画像を読み込めるようにしたい。

私の Init 関数では、次のように呼び出します。

Gl.glGenTextures(1, mTextures);

一度に表示される画像は 1 つだけなので、各画像に同じテクスチャ名を使用しています。

新しい画像が読み込まれるたびに、次のように呼び出します。

Gl.glBindTexture(Gl.GL_TEXTURE_2D, mTexture[0]);

Gl.glTexImage2D(Gl.GL_TEXTURE_2D, 0, Gl.GL_LUMINANCE, mTexSizeX, mTexSizeY, 0, Gl.GL_LUMINANCE, Gl.GL_UNSIGNED_SHORT, mTexBuffer);
Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MIN_FILTER, Gl.GL_LINEAR);   
Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MAG_FILTER, Gl.GL_LINEAR);

最初の画像は期待どおりに表示されます。ただし、すべての画像は最初の画像の後に読み込まれ、すべて黒で表示されます。

私は何を間違っていますか?

4

4 に答える 4

1

あなたが示しているコードに問題があるとは思いません。テクスチャを使用して描画する方法と、渡されたテクスチャ データがどのglTexImage2Dように見えるかについて、より多くの情報を提供する必要があります。あなたが電話する時までにそれはまだ有効ですglTexImage2Dか?

于 2009-10-18T09:06:53.747 に答える
1

glDisable GL_TEXTURE_2D描いた後ですか?glColor4f(1,1,1,1);2D テクスチャが無効になっている場合は、少なくとも白い四角形を表示する必要があります。ここで問題を見つけるのに役立ちます。

于 2010-11-05T12:00:52.557 に答える
0

これらのテクスチャを使用してジオメトリを提出するのはいつですか? あなたはそれを示していませんが、テクスチャの読み込みとインターリーブされていると思います。もちろん、テクスチャ名を別の画像に置き換える場合は、テクスチャ名を使用する必要はまったくありませんね。glTextImage2D新しいテクスチャを設定する必要があるときに呼び出しを行い、必要なだけ使用して、まったく関与glBindTexture()しないようにすることができます。

もちろん、やるべきことはエラーチェックコードを挿入することです.OpenGLは操作が失敗したときにエラーコードを保存し、このコードはアプリケーションによって読み取られるまで上書きされません. 詳細については、 glGetError()を参照してください。

于 2008-12-02T07:02:25.550 に答える
0

探している関数は「glCopyTexImage2D」または「glCopyTexSubImage2D」です。

于 2008-12-05T01:09:20.630 に答える