2

Golang OpenGL バインディングを使用して単純な三角形をテッセレートしようとしています

このライブラリは、テッセレーション シェーダーのサポートを主張していませんが、ソース コードを調べたところ、正しいバインディングを追加することはそれほど難しくないように思えました。だから私はそれを分岐して、正しい定数をgl_defs.goに追加しようとしました。

バインディングはまだうまくコンパイルされ、私のプログラムもそうです。実際に新しいバインディングを使用しようとすると、奇妙なことが起こります。実際にテッセレーション シェーダーを含めようとすると、プログラムはきれいに円を描く三角形から黒い画面に変わります。

私は OpenGL Superbible (第 6 版) に従っており、このプロジェクトにそのシェーダーを使用しているため、壊れたシェーダーを使用しているとは思いません (とにかく、エラー ログを吐き出しません)。ただし、シェーダー自体に問題がある場合は、こちらsetupProgram()の関数で見つけることができます。

openGL バージョンを印刷すると4.4.0 NVIDIA 331.38 .

だから私の質問:

テッセレーションに go バインディングを追加してもうまくいかない理由はありますか? バインディングは非常に簡単に見えます。新しいバインディングを間違って追加していませんか?

うまくいくはずなのに、なぜうまくいかないのですか? ここで何が間違っていますか?

4

1 に答える 1

1

実行する価値のある手順:

  1. ドライバーとビデオ カードはテッセレーション シェーダーをサポートしている場合がありますが、バインディングが返す GL コンテキストは以前のバージョンの OpenGL 用である可能性があります。何が得られるか試してみglGetString​(GL_VERSION​)てください。
  2. 基本的にどこでも呼び出しglGetErrorて、実際にその値をチェックしていますか? このバインディングはエラーの戻り値を提供しますか? もしそうなら、あなたはそれらをチェックしていますか?
于 2014-01-23T20:30:56.997 に答える