2009-03-16 14 views
2

GLSLシェーダを使用するプロジェクトがあります。GLSL Shaderをインテルでコンパイル

このプロジェクトは、何か問題が起きないか、明示的に何か特別なデバッグ出力をオンにしない限り、何も出力しないように設計されています。

glGetProgramInfoLogによって与えられるログの長さは、シェイダーのコンパイルに失敗すると> 0になり、時にはコンパイルの警告が返されます。ログの長さを完全にコンパイルするシェーダがある場合、< 1 ...これは、私の開発マシンのNVidiaカードで動作する方法です。

私の罪については、私はまた、Intel内蔵グラフィックスカードを備えたノートパソコンでデベロッパーもしています。コードは細かい動作しますが、私はコンパイルシェーダを行うたびログが含まれています

は非常に迷惑です

「シェーダーが正常にハードウェア上で実行するようにコンパイルされた」、私は今、私がすべきかどうかを判断する方法がありませんよう文字列解析とは別に、文字列を出力してください。例:

strstr("successfully",log) 

なぜそれが望ましくないのでしょうか。 メッセージがOpenGL APIを使用して印刷する価値があるかどうかをどうして知ることができますか?

EDIT:

私はglGetShaderiv(shaderobj,GL_COMPILE_STATUS,&err);を使用している場合、私は警告、エラーのみをコンパイルし得ることはありません。ここで

答えて

6

あなたが行く:これはあなたが得る状況をコンパイルされ

glGetShaderiv(shaderobj,GL_COMPILE_STATUS,&err); 
if(!err) { /* now print out the error log */ } 

。私はあなたが警告を受けているかどうかを判断するために見つけた移植可能な方法はありません。 (コンパイルログには、実装が成功を通知するものを含めて、実装が気にするものがいっぱいです。)

+0

返信いただきありがとうございます。 – DaedalusFall

+0

警告、またはエラーはありますが、成功メッセージはないかどうかを知りたい場合は、申し訳ありませんが、私はかなりコンパイル状態がすべてあることを確信しています。 –

+0

はい、まさに私が欲しいものです。 恥、私はそれを乱雑なやり方でやらなければならないだろう。おかげさまで – DaedalusFall

関連する問題