GL_INVALID_OPERATIONを引き起こすglProgramStringARB…またはフラグメントプログラムのヘルプ

StackOverflow https://stackoverflow.com/questions/339042

  •  19-08-2019
  •  | 
  •  

質問

テクスチャを取得し、テクセルを2つの値の間にクランプするフラグメントプログラムを作成しようとしています。つまり、最小値が0.2で、最大値が0.6の場合、0.2未満のテクセルは0になり、0.6を超えるテクセルは1.0になり、その間のすべての値は0から1.0にマップされます。

glProgramStringARBを呼び出すと、GL_INVALID_OPERATIONが発生します。なぜこれが起こっているのか理解できないようです。助けてください。

これはシェーダーを作成する最初の試みであるため、自分が何をしているのか完全にはわかりません。これが私のコードです: ジェネラコディセタグプレ

それを使用するには、次のようにします。 ジェネラコディセタグプレ

役に立ちましたか?

解決

実際にはシェーダーをプログラムしていませんが、シェーダーコンパイラが新しい行を認識しない可能性がありますか?「\n\ r」を入れてみましたか?

編集:

あなたが自問するかもしれないもう一つの質問は、あなたが使用している言語ですか?文字列はUNICODE、つまり16ビット/文字ですか?glProgramStringARB()に渡す形式がASCIIに設定されていることに気づきました。文字列が本当にUNICODEの場合、問題が発生します。

たとえば、JAVAおよびC#文字列はUNICODEにあります。ASCIIではありません。

他のヒント

最初:ARB_fragment_programについてあまり知らないので、ここで部分的に推測しています。

最善のオプションは、エラー文字列(glGetString(GL_PROGRAM_ERROR_STRING_ARB))を取得して、それが何を示しているかを確認することです。

シェーダーを確認したところ、3行目と7行目(およびおそらくそれ以上)で間違った数のコンポーネントを使用しているようです。たとえば、4成分ベクトル(fragment.texcoord [1])をスカラー場(R0.x)に割り当てることはできないと思います。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top