2011-12-27 17 views
8

Me estoy metiendo en GLSL y necesito ayuda con las búsquedas de texturas. Intento usar una textura para el almacenamiento pero no puedo obtener búsquedas de texturas "apropiadas". Preferiría usar el método usual texture2D (usando GLSL 1.2) pero los resultados no son lo suficientemente buenos.Alternativa a texelFetch?

Uso Texture2D: one

Usando texelFetch: two

Ahora, evidentemente, algo está mal con el primero. Aquí es lo que estoy tratando de hacer (sí tamaños son correctas a menos que haya algo que no sé de):

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

Así que, ¿cómo esto se haga correctamente?

+1

¿Cuáles son los parámetros de filtrado de texturas que está utilizando? ¿Tu textura tiene mipmaps? –

+0

Estaba en la posición más cercana y no tenía mipmaps. Aunque descubrí el problema. Estaba usando el tamaño de la textura en lugar del rango, así que estaba reduciendo un poco el tamaño. Mal nombre. –

Respuesta

6

Esto se ha convertido en una especie de FAQ:

me respondió desde aquí

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

y aquí

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

y en algunos otros lugares también.

+1

Gracias. Pasé los últimos días tratando de descubrir qué estaba mal, pero nunca encontré tus respuestas u otras similares. Supongo que mis palabras clave no fueron muy buenas. –

+12

Castigar a las personas por no buscar en Google no es útil; las personas que ** no ** se toman el tiempo de buscar tienden a correr hacia todos los enlaces de gente que se enoja porque alguien no buscó, lo que hace que el conjunto sea inútil para los que realmente intentan buscar soluciones antes de pedir nuevas preguntas – Skrylar

+26

Irónicamente, esta respuesta fue el primer enlace de stackoverflow en mis resultados de búsqueda. –

3

Yo diría, use textureRect. Luego puede usar texture2D y suministrar los coodinates reales en píxeles a los que le gustaría acceder.