私は現在OpenGL 3.3+と最新のシェーダベースのレンダリングプロセスを学んでいます。これまで、私はC#を使ってGLFWとOpenGLのための独自のバインディングを作成することができました。そして、すべてが今どのように動作しているかをかなりよく理解しています。私は自分のプロジェクトのすべてがどのように機能しているか知っているので、最初からすべてをやるのが好きです。OpenGL 3.3以降 - シェーダ、属性、ユニフォーム、イン/アウト変数 - どのように、いつ、いつ、なぜですか?
しかし、「スティック」したくないものは次のとおりです。イン/アウト変数、属性、ユニフォームの違いは正確です。どちらを使用するのかをどのように知るのですか?私は、OpenGL State-Machineの仕組みをかなりよく理解していると思っていますが、レンダリングプロセスのこの部分についてはほとんど詳しく説明されていません。ほとんどのチュートリアルや書籍は、「これはデータをシェーダーに渡す方法です」と言っていますが、どのメソッドを使用するかを説明するテキストはまだありません。
また、シェーダとVBO間の接続に関する情報がもう少し好きです。私はそれが上の私の質問と組み合わせることができると思います。
質問をより具体的にするもう1つの編集:バリエーション、属性、ユニフォーム、バッファオブジェクト間の関係を詳細に説明するソースはありますか?どのように機能するのですか?いつ使うの?何を避けるべきですか?次のように
これは大きな質問です。特に編集に問題があります。 Attrib/Varying/Uniformとそのバインディング可能性との関係は、GLへの新規参入者にとって無限の間違いの原因です。ビーバーはそのような新人を助けることができる質の高い答えを提供しました。おそらく質問の重要性を守るのはルール違反だと思うけど...:S –
@JoshParnellあなたの返事をくれてありがとうJosh。あなたのコメントを使用して私の質問にもう少し具体的に言い返しても構わないと思います。多分このスレッドでこのようにいくつかの答えを得ることができます:) – j8a2b0e7