Después de decidir probar la programación en OpenGL moderno, he dejado atrás el flujo de funciones fijo y no estoy del todo seguro sobre cómo obtener la misma funcionalidad que tenía antes.mapeo perfecto de texturas de píxeles con OpenGL
Estoy tratando de texturar cuadrículas de mapa con un tamaño perfecto de píxel, que coincida con el tamaño de la textura. Por ejemplo, una textura de 128x128 se asigna a un cuadrante de 128x128 de tamaño.
Este es mi sombreador de vértices.
#version 110
uniform float xpos;
uniform float ypos;
uniform float tw; // texture width in pixels
uniform float th; // texture height in pixels
attribute vec4 position;
varying vec2 texcoord;
void main()
{
mat4 projectionMatrix = mat4(2.0/600.0, 0.0, 0.0, -1.0,
0.0, 2.0/800.0, 0.0, -1.0,
0.0, 0.0, -1.0, 0.0,
0.0, 0.0, 0.0, 1.0);
gl_Position = position * projectionMatrix;
texcoord = (gl_Position.xy);
}
Este es mi fragmento shader:
#version 110
uniform float fade_factor;
uniform sampler2D textures[1];
varying vec2 texcoord;
void main()
{
gl_FragColor = texture2D(textures[0], texcoord);
}
Mi datos de vértice es como tal, donde w y h son la anchura y la altura de la textura.
[
0, 0,
w, 0,
w, h,
0, h
]
me carga una textura de 128x128 y con estos shaders que veo la imagen repetida 4 veces: http://i.stack.imgur.com/UY7Ts.jpg
puede ofrecer cualquier consejo sobre la forma correcta de ser capaz de traducir y la escala dada la XX TW, XPos , xpos uniformes?
¡Hola, zurdo! Bienvenido a StackOverflow. Algunas cosas para recordar: por favor, sangra su código con cuatro espacios (o con el ícono '{}') para que esté formateado correctamente. Además, al publicar en la etiqueta 'OpenGL', es útil cuando especifica su versión de OpenGL. Especialmente porque las muestras de código suenan como OpenGL 2.0, lo que de hecho es útil, pero no realmente "moderno" en la actualidad. :) – Kos
Gracias por la respuesta. Este es el OpenGL moderno (> = 3?) Porque no estoy utilizando la canalización de función fija, mis datos de vértice se suministran en una matriz y el muestreo de textura se realiza con sombreadores. Dicho esto, todavía soy relativamente nuevo en esto, así que corrígeme si estoy equivocado :) – Lefty
relacionado http://stackoverflow.com/questions/7922526/opengl-deterministic-rendering-between-gpu-vendor –