すべてのポリゴンが同じ法線とかなりの色の違いを持つポリゴン メッシュ全体で色を補間する最良の方法は何ですか? GLSL の使用 (gouraud または phong シェーディングを使用) は正しいアプローチですか、それとも別の場所 (CPU 側) で使用する必要がありますか? それとも、これを完全に間違っていますか?
ps: OpenGL 4.0+ を使用しています
このようなメッシュで色を補間したいと思います。
あなたの写真に基づいて、三角形(面)ごとにフラットシェーディングを行う必要があります。頂点バッファーでは、三角形ごとに頂点カラー属性を追加できます。実際には、頂点ごとの色になるため、インターリーブされた頂点バッファー配列を使用している場合は、次のようになります。
[
vertex1.x , vertex1.y , vertex1.z ,vertex1color.r ,vertex1color.g ,vertex1color.b,
vertex2.x , vertex2.y , vertex2.z ,vertex2color.r ,vertex2color.g ,vertex2color.b,
vertex3.x , vertex3.y , vertex3.z ,vertex32color.r vertex3color.g ,vertex3color.b
..... the same for the rest of triangles ...
]
次に、頂点シェーダーで、フラグメント シェーダーがフラグメントを「ペイント」するために使用する出力色の変化を設定します。次に、変化するがフラットな補間を設定しないことが重要です。色が補間されないようにします。プリミティブを越えて。 これを行う方法の例を次に示します (GLSL 330 以降を使用している場合は、「可変」を in / out に置き換えます)。