2016-06-30 14 views
5

OpenGL ve GLSL'ye gelince tam bir acemiyim. OpenGL'ın distance fonksiyonu üzerindeKullanıcılar neden OpenGL'nin mesafe işlevi üzerinden sqrt (nokta (distanceVector, distanceVector)) kullanıyor?

vec2 uv = fragCoord/iResolution; 
vec2 centerPoint = vec2(0.5); 

vec2 distanceVector = uv - centerPoint; 
float dist = sqrt(dot(distanceVector, distanceVector)); 

: ShaderToy kullanırken Yani, sık sık böyle bir şey kullanarak insanlar görmek sözü

vec2 uv = fragCoord/iResolution; 
vec2 centerPoint = vec2(0.5); 

float dist = distance(uv, centerPoint); 

bu yüzden sadece merak (benim tahminim o şey için olmasıdır distance için hız ile veya destek ile yapın.

Bağımsız değişkenler aynıysa, bir nokta ürününün karekökünün vektörün uzunluğuna eşit olduğunu anlıyorum: mesafe?

cevap

5

Temelde aynı şeyi yapan insanlar genellikle iki nedenden biri için sqrt seçeneğini kullanır: 1. Mesafe işlevini hatırlamaz/hatırlamazlar. 2. Kendilerini ve kendi matematiklerini kanıtlamak için güvenirler. bir hataya neden olan bir sorun değil (OpenGL sorunlarından kaçınmak)

+0

benim için çalışıyor. Teşekkürler. – bradleygriffith

+0

Daha hızlı mı? ya da iki fonksiyon döngüsünü karşılaştırabilir misin? –

İlgili konular