私は現在、次の頂点データ(ピラミッド用)を次のようにレイアウトしています:
float4 vertexData[ 18 ] =
{
// front
{ 1.0f, 0.0f, 1.0f, 1.0f }, // front right
{ 0.0f, 1.0f, 0.0f, 1.0f }, // top
{ -1.0, 0.0f, 1.0f, 1.0f }, // front left
// right
{ 1.0f, 0.0f, 1.0f, 1.0f }, // right front
{ 0.0f, 1.0f, 0.0f, 1.0f }, // top
{ 1.0f, 0.0f, -1.0f, 1.0f }, // right back
// back
{ 1.0f, 0.0f, -1.0f, 1.0f }, // back right
{ 0.0f, 1.0f, 0.0f, 1.0f }, // top
{ -1.0, 0.0f, -1.0f, 1.0f }, // back left
// left
{ -1.0f, 0.0f, -1.0f, 1.0f }, // left back
{ 0.0f, 1.0f, 0.0f, 1.0f }, // top
{ -1.0f, 0.0f, 1.0f, 1.0f }, // left front
// bottom back major
{ -1.0f, 0.0f, 1.0f, 1.0f }, // bottom left front
{ -1.0f, 0.0f, -1.0f, 1.0f }, // bottom left back
{ 1.0f, 0.0f, -1.0f, 1.0f }, // bottom right back
// bottom front major
{ 1.0f, 0.0f, -1.0f, 1.0f }, // bottom right back
{ 1.0f, 0.0f, 1.0f, 1.0f }, // bottom right front
{ -1.0f, 0.0f, 1.0f, 1.0f }, // bottom left front
};
私は基本的にピラミッドを取り、(可能であれば) シェーダーを使用して 2 つの頂点間のエッジを計算し、フラグメント シェーダーに一種の「線」となるものを送信したいと考えています。
おそらく「GL_LINES」を使用して、新しい均一な色を設定できることはわかっていますが、これはあまり効率的ではないと思います。多分私は間違っていますか?
いずれにせよ、私が最初にシェーダーを考えていた主な理由は、シェーダーがこれを行うクールな手段になるからです。ボーダーに興味深い効果を追加できるプログラムを書くことができたからです。ただし、1 つのシェーダー プログラムでこれを行う方法に関しては、完全に困惑しています。
これに対する良いアプローチに関するアイデアはありますか?