私はこの基本的なシェーダーを持っていますが、本当に私を悩ませているトラブルに遭遇しました!
フラグメント シェーダーを使用してテクスチャを適用していますが、カメラを移動または回転しても、顔のテクスチャは常にカメラの方を向いています (例として 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;
テクスチャそのものです。