0

私はこの基本的なシェーダーを持っていますが、本当に私を悩ませているトラブルに遭遇しました!

フラグメント シェーダーを使用してテクスチャを適用していますが、カメラを移動または回転しても、顔のテクスチャは常にカメラの方を向いています (例として GIF 画像を追加しました)。

gif

上の画像でわかるように、テクスチャはカメラの方を向いたままで、遠ざかったり近くに移動したりしても、そのスケールが維持されます。

私は動き回ることができ、テクスチャは現在のようにカメラではなく、面と頂点に従って位置、回転、およびスケールを維持することを達成しようとしています。

これが望ましい結果ですが、非推奨の方法を使用し、glVertex2fシェーダーglTexCoord2fを使用しても同じ結果が得られますが、私の問題はテクスチャの正しい UV 座標を計算することだと思います。

望ましい結果
(出典:gyazo.com

シェーダーを使用してこれを達成したいので、実際のテクスチャの色に変更を加えたり計算したりできます。(たとえば、白黒にします)。

これが私の現在の Vertex & Fragment Shader Code です。

頂点シェーダー コード

void main() {
    gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
}

フラグメント シェーダー コード

uniform vec2 size;
uniform sampler2D texture;

void main() {
    gl_FragColor = texture2D(texture, gl_FragCoord.xy / size.xy);
}

フラグメント シェーダー内のuniform vec2 size;は、テクスチャが適用される面自体の幅と高さです。もちろん、草のuniform sampler2D texture;テクスチャそのものです。

4

1 に答える 1