Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





¿como se visulizan poligonos con color y texturas a la vez?

Iniciado por xeex, 13 de Junio de 2007, 11:49:02 PM

« anterior - próximo »

xeex

HOLA,

tengo unas texuras que adoptan el color del poligo coloreado que tengo en la escena ¿como lo evito?

mas descritivamente:
tengo un

glBegin(GL_QUADS);
glColor3f(1,0,0);
glNormal3f(0,-1,0);
glVertex3f(-largo,altura,-largo);
glVertex3f(-largo,altura,largo);
glVertex3f(largo,altura,largo);
glVertex3f(largo,altura,-largo);
glEnd();

luego en otro lado cargo unas texturas.
Estas estan bien si se cargan solas pero al momento de
que se muestran con el GL_QUAD de color rojo, estas se vuelven rojas.

senior wapo

La solución rápida y guarra es poner el color a blanco antes de pintar con texturas y la textura aparecerá sin alterar ya que al modular con blanco el color que sale es el de la textura.

Se puede hacer lo que tu pides pero es por no liarte más :)

Prompt

Cuando generas la texturas y/o bindeas la misma para aplicarla a un poligono puedes seleccionar el modo en el que esta se aplica.

Por ejemplo:

glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);

GL_MODULATE, GL_ADD, GL_DECAL... hay varios modos de aplicar la textura, estoy seguro que si los miras un poco obtendras rápidamente el que te viene bien.

Creo que el glColor3f(1,0,0); sobraría ahí, a no ser que lo quieras para pintar ese poligono en particular. Normalmente en todas las escenas cuando limpias con el color lo pones a 1,1,1. Y si para debug quieres pintar en color asignas glColor3f(1.0f,0.0f,0.0f); y luego restauras el color por defecto aplicable a todo lo demás glColor3f(1.0f,1.0f,1.0f);


glColor3f(1.0f,0.0f,0.0f);   // Se asigna color
   pintoPoligono();
glColor3f(1.0f,1.0f,1.0f);   // Se restaura el color por defecto

Acuerdate siempre de restaurar el color por defecto blanco. Y de usar en las funciones de coma flotante, _f floats y no enteros :P

Saludetes!

marcode

Cita de: "Prompt"Cuando generas la texturas y/o bindeas la misma para aplicarla a un poligono puedes seleccionar el modo en el que esta se aplica.

Por ejemplo:

glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);

GL_MODULATE, GL_ADD, GL_DECAL... hay varios modos de aplicar la textura, estoy seguro que si los miras un poco obtendras rápidamente el que te viene bien.

Supongo que el que necesitará es GL_REPLACE para no usar colores,y GL_MODULATE para combinarlos.
size=9]afortunadamente siempre ha habido alguien dispuesto a reinventar la rueda, de lo contrario seguiríamos usando un disco de piedra con un agujero.[/size]

habier

Si pones el modo ese GL_LINE (creo que es ese, el que no es GL_FILL me refiero) igual pasara lo que quieres tu? O igual las texturas tampoco se veran.. ni idea, pero por probar..

xeex

MUCHAS GRACIAS.

Yo no estoy diciendo que tenga problemas con el poligono en el  cual pego la textura sino en otro.
En la escena tengo un skybox(cubo  con 6 texturas una para cada lado).
Lo que quiero hacer es sacar la textura del lado superior del cubo y reemplazarlo por un poligono del color elegido.
El problema es que segun sea este color elegido con que pintara este poligono tambien se me pintaran las otras texturas del cubo.

Osea por que pasa que si tengo un textura cualquiera en la escena y tengo no en mismo lugar ni siquiera toacando a la textura una linea por ejemplo de color azul ¿por que la textura adopta el color azul?
Acaso desde el momento que se usan texturas es incompatible con las lineas o poligonos  con colores.

MUCHAS GRACIAS
SALUDOS

The-Force

Restaura el color a blanco como te dice mas arriba con glColor3f(1.0f,1.0f,1.0f); A mi me pasa lo mismo en la unica textura en la que no asigno material por desactivar la iluminacion. Supongo que sera cosa del GL_MODULATE, si es que usas ese modo u otro que blendee la textura.

marcode

Para eso creo que lo mejor es GL_DECAL que dibuja la textura encima del color pero la mezcla dependiendo del valor alpha. Deberías entonces poner la textura superior con alpha a 0 y el resto a 1.0
size=9]afortunadamente siempre ha habido alguien dispuesto a reinventar la rueda, de lo contrario seguiríamos usando un disco de piedra con un agujero.[/size]






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.