1

テレイン パッチの高さマップを保持する 16 ビット テクスチャを作成しようとしていますが、次の両方で「無効な列挙型」エラーが返されます。CHECK_GL_ERROR() マクロは、gluErrorString をメッセージとして表示し、glGetError が GL_NO_ERROR 以外の何かを返す場合は中断します。

CHECK_GL_ERROR( glTexImage2D( GL_TEXTURE_2D, 0, GL_LUMINANCE16, width_, depth_, 0, GL_LUMINANCE, GL_UNSIGNED_SHORT, 0 /*data_.raw_data()*/ ) );
CHECK_GL_ERROR( glTexImage2D( GL_TEXTURE_2D, 0, GL_ALPHA16, width_, depth_, 0, GL_ALPHA, GL_UNSIGNED_SHORT, 0 /*data_.raw_data()*/ ) );

GL_TEXTURE_2D ターゲットにバインドされたテクスチャを作成しましたが、次のエラーがあってもなくても同じエラーが発生します。

glPixelStorei( GL_UNPACK_ALIGNMENT, 2 );

GTX 560Ti で OpenGL 3.2 コンテキスト、NVIDIA CUDA dev ドライバー 286.16 を使用しています。誰かが私が間違っていることを見ることができますか?

乾杯

4

1 に答える 1

3

コアコンテキストを使用している場合は、それが予想されます。GL_LUMINANCEまたはGL_ALPHA 画像形式はもうありません。

それらの効果をエミュレートする場合は、単一チャネルの画像形式を作成する必要があります。だからGL_R16あなたの内部フォーマットでなければなりません。次に、テクスチャオブジェクトにテクスチャスウィズルマスクを設定して、適切と思われるように、単一の赤チャンネルがRGBまたはアルファのいずれかにブロードキャストされるようにします。

この方法の方が本当に良いです。

于 2012-02-20T03:48:36.893 に答える