2011-12-27 9 views
8

Sto entrando in GLSL e ho bisogno di aiuto con le ricerche di texture. Sto cercando di utilizzare una texture per l'archiviazione, ma non riesco a ottenere le "texture" oculate. Preferirei usare il solito metodo texture2D (usando GLSL 1.2) ma i risultati non sono abbastanza buoni.Alternativa a texelFetch?

Uso Texture2D: one

Utilizzando texelFetch: two

Ora, ovviamente, qualcosa non va con il primo. Ecco quello che sto cercando di fare (sì formati sono corretti a meno che non ci sia qualcosa che non conosco):

vec4 texelFetch(sampler2D tex, ivec2 size, ivec2 coord) 
{ 
    return texture2D(tex, vec2(float(coord.x)/float(size.x), 
           float(coord.y)/float(size.y))); 
} 

Così, come sarebbe questo essere fatto correttamente?

+1

Quali sono i parametri di filtro della trama che si stanno utilizzando? La tua texture ha mipmaps? –

+0

Era più vicino e non aveva mipmaps. Comunque ho capito il problema. Stavo usando la dimensione della trama anziché l'intervallo, quindi era un downscaling un po '. Povera denominazione. –

risposta

6

questo è diventato una sorta di FAQ:

ho risposto qui

https://stackoverflow.com/a/5879551/524368

e qui

https://stackoverflow.com/a/7272871/524368

e in pochi altri posti.

+1

Grazie. Ho passato gli ultimi giorni a cercare di capire cosa c'era che non andava, ma non ho mai trovato le tue risposte o un'altra come loro. Immagino che le mie parole chiave non fossero troppo grandi. –

+12

Non è utile rimproverare le persone per non googling; le persone che ** fanno ** prendono il tempo per cercare tendono a imbattersi in tutti i link di persone che si arrabbiano che qualcuno non ha cercato, il che finisce per rendere il pool inutile per quelli che cercano effettivamente di cercare le soluzioni prima di chiedere nuove domande. – Skrylar

+26

Ironia della sorte, questa risposta è stata il primo link StackOverflow nei miei risultati di ricerca. –

3

Direi, utilizzare textureRect. Quindi è possibile utilizzare texture2D e fornire i coodati effettivi in ​​pixel a cui si desidera accedere.