SoloCodigo
Programación Específica => Programación de Videojuegos => OpenGL => Mensaje iniciado por: Uvatha en Domingo 4 de Diciembre de 2005, 11:45
-
Hola,
os pido ayuda pues en Internet sólo he encontrado gente con la misma pregunta y sin respuesta.Expongo los hechos:
1-
Cargo una imagen en memoria con
TextureImage[0]=LoadBMP("Imagen.bmp");
2-
La función LoadBMP es como sigue:
AUX_RGBImageRec *LoadBMP(char *Filename) {
FILE *File=NULL;
if (!Filename)
{
return NULL;
}
File=fopen(Filename,"r");
if (File)
{
fclose(File);
return auxDIBImageLoad(Filename);
}
return NULL;
}
3-
Luego ya tengo la imagen en una estructura AUX_RGBImageRec, de la cual no encuentro mucha información. Tiene dos parámetros sizeX y sixeY que guardan el valor de las dimensiones del fichero y tiene otro componente 'data' que he leído que es un array de bytes con una dimension sizeX*sizeY*3, pues para cada pixel guarda tres bytes (las coordenadas RGB de cada píxel).
Mis preguntas son:
1-alguien conoce la especificación de la estructura AUX_RGBImageRec?
2-Como puedo acceder al array 'data' para leer los valores RGB de caca píxel?
3-Hay alguna otra forma de acceder al valor concreto de uno solo de los (por ejemplo) 512*512 píxels de una imagen para manipularlo a mi antojo?
4-Conocéis algun ejemplo (tutorial) en el que se trate este tipo de situación?
Gracias por adelantado.
Uvatha
-
hola, uvatha... te doy un link con el que puedes cargar una textura.
http://informatica.uv.es/iiguia/2000/AIG/docs/texturas.htm (http://informatica.uv.es/iiguia/2000/AIG/docs/texturas.htm)
A mi me funcionó, pero la imagen debe ser .bmp con 256 colores, con 24 bit no se ve correctamente la imagen. Y otro inconveniente q encontre es que para evitar algunos desperfectos con los colores de los demas objetos, debes agregar la funcion glDisable(GL_TEXTURE_2D);
Espero te sirva de ayuda.
A la vez si me puedes ayudar con la funcion gluLookAt, te agradeceria. Es que estoy dibujando un laberinto en 2D, y ahora quiero que sea 3D, es decir en vez de posicionar la camara en sobre Z, quiero posicionarlo sobre X o Y, para tener una vista en primera persona, me explico?