glVertexAttribPointer normalizasyonu


11

glVertexAttribPointer (dizin, boyut, tür, normalleştirilmiş, adım, işaretçi);

= GL_UNSIGNED_BYTE türünü kullanırsam ve normalleştirilmişse = GL_TRUE

nasıl normalleştirilir? normalleştirme için veriler 256'ya bölünür mü? veya? Bu, '1.0f' değerinin normalleştirilmiş bir değerine sahip olmanın hiçbir yolu olmadığı anlamına gelir.

Yanıtlar:


13

Kılavuzdan,

GL_TRUE olarak ayarlanırsa normalleştirilmiş, bir tamsayı biçiminde saklanan değerlerin, erişildiğinde ve bu biçime dönüştürüldüğünde [-1,1] (işaretli değerler için) veya [0,1] (işaretsiz değerler için) aralığına eşleneceğini belirtir. kayan nokta.

Bunu imzasız bir 8 bit tipiyle 0, 0.0f'ye ve 255'in 1.0f'ye eşleyeceği anlamına gelir.


Yani bu 255'e bölündüğü anlamına mı geliyor?
— Jonathan

Doğru, imzasız bayt aralığı 0 - 255 arasındadır. Yani 0xFF (255'e eşit) değerini geçtiyseniz, 1.0f alırsınız.
— notlesh

7
... Orijinal Zelda'yı hiç oynadın mı? Tutabileceğiniz maksimum yakut miktarı 256 değil 255 idi;)
— notlesh

İmzasız baytların sadece 255'e gittiğini biliyorum. Sadece merak ediyordum çünkü GPU'nun iki güçle bölünmesi mantıklı görünüyordu
— Jonathan

Benzer bir şey merak ediyordum. Uint_8'den şamandıraya verimli bir dönüşüm olabilir, bu da etraftaki bitleri kaydırmaktan daha fazlasını yapmaz, ama soracak biri değilim ... FPU'lar hakkında daha fazla şey bilen biri araya girebilir mi?
— notlesh
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.