Foros - Stratos

Programadores => Programación gráfica => Mensaje iniciado por: maqueapower en 13 de Septiembre de 2007, 11:59:33 AM

Título: OPENGL imagen de fondo
Publicado por: maqueapower en 13 de Septiembre de 2007, 11:59:33 AM
hola buenas, querria consultar una duda sobre OPENGL...
soy principiante y he descubierto q con glClearColor se establece el color de fondo de la escena... ¿se podria poner una imagen de fondo de forma directa?
o hay que crear una esfera o un plano y mapearlo?¿?¿?
Título: OPENGL imagen de fondo
Publicado por: tamat en 13 de Septiembre de 2007, 12:16:33 PM
pones el viewport a 0,0,1,1, y haces un plano de 0,0 a 1,1 con coordenadas de textura 0,0  0,1  1,0  1,1

OpenGL es un API de bajo nivel, no esperes ese tipo de "ayudas"
Título: OPENGL imagen de fondo
Publicado por: senior wapo en 13 de Septiembre de 2007, 01:02:30 PM
Si que puedes volcar pixeles directamente con OpenGL, pero será más lento que poner un plano texturado  si la imagen es estática.

Si el fondo va a cambiar cada fotograma, como pueda ser poner un video de fondo, entonces te da igual una cosa que otra (en realidad no, si usas varias texturas pero eso ya te liará más).

Mirate en google la funcion glDrawPixels() y glRasterPos().
Título: OPENGL imagen de fondo
Publicado por: Alexpi en 13 de Septiembre de 2007, 02:19:49 PM
Un forma que use yo hace tiempo es desactivando el DEPTH TEST. Es una solucion rapida y muy facil de usar, aqui te muestro el codigo que use.

void Fondo()
{
Perspectiva2D();

glDisable(GL_DEPTH_TEST);

glColor3f(1.0, 1.0, 1.0);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, texture[0]);

glBegin(GL_QUADS);
glTexCoord2f(0.0f,1.0f);
glVertex2d(0,0);

glTexCoord2f(1.0f,1.0f);
glVertex2d(SCREEN_WIDTH,0);

glTexCoord2f(1.0f,0.0f);
glVertex2d(SCREEN_WIDTH,SCREEN_HEIGHT);

glTexCoord2f(0.0f,0.0f);
glVertex2d(0,SCREEN_HEIGHT);
glEnd();

glDisable(GL_TEXTURE_2D);

glEnable(GL_DEPTH_TEST);

Perspectiva3D();
}


Simplemente dibujo un plano que cubra toda la pantalla al cual le pongo la textura que sera el fondo.

Todo lo que se rendee despues del fondo con el DEPTH_TEST activado, siempre aparecera sobre la imagen.