GLSL: Nasıl bir şamandıra bir int için döküm?


40

Bir GLSL parça gölgelendirici ben bir döküm çalışıyorum floatbir içine int. Derleyici bir hata veriyor:

ERROR: 0:60: '=' :  cannot convert from 'mediump float' to 'highp int'

Şunun hassasiyetini arttırmayı denedim int:

mediump float indexf = floor(2.0 * mixer);
highp int index = indexf;

ama boşuna.

intDoğru şekilde nasıl kullanırım ?


1
Gelecekte referans olarak, Stack Overflow'ta bunun gibi genel programlama soruları sorarsanız daha iyi cevaplar alırsınız. stackoverflow.com - Topluluk görüşlerine bağlı olarak bu soru yine de oraya taşınabilir.
Ricket,

Artıkları yeniden yorumlamak için, gibi fonksiyonlar vardır floatBitsToInt.
jozxyqk

Yanıtlar:


41

Bunu dene:

highp int index = int(indexf);

Onu burada buldum .


Ayrıca bir şamandıraya bir int yazmanın otomatik olarak onu (en azından şimdiye kadar gördüğüm herhangi bir uygulamada) döşemesini unutmayın;
Ricket,

6
Çoğu dilde yuvarlama modu kesik / yuvarlak-sıfıra gelir, bu da pozitif sayılar için zemine eşittir, ancak negatif sayılar değildir. Bunun GLSL için geçerli olup olmadığını hatırlamıyorum, ama olmasaydı şaşırırdım.

@Joe Bu, hiç düşünmediğim ilginç bir gerçekti ve bir Java test davasıyla onayladım.
Ricket

4
Highp burada önemli mi? (Bir Tamsayı On)
Léon Pelletier

Teşekkürler, benim davamda da işe yaradı. Sayfa olmadığından, yazdığınız referansı güncelleyebilir misiniz?
Bora,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.