Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Menu

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menu

Mensajes - Ray

#31
 
Cita de: "Ray"...
Entonces, si el color alfa es 0, los pixels no se dibujan porque el color resultante es:

ColorTextura*0 + ColorFondo*(1 - 0)
....
Una aclaración por un error mio.

quiero decir que los pixels si se dibujan, porque como dije antes con alphablending todos los pixels se dibujan, pero se dibujan con el color del fondo por lo que parece que no se dibujan, pero SI se dibujan siempre.

y como dije antes, si usas el test alpha glEnable(GL_ALPHA_TEST), entonces ya si, los pixels con transparencia alpha no se dibujaran en el buffer de color, y por lo tanto tampoco se establecerá un valor en el buffer de profundidad.

Lo mejor para no liarte es que no uses el buffer de profundidad, por lo tanto tienes que quitar:

glEnable(GL_DEPTH_TEST);

y el | GL_DEPTH_BUFFER_BIT de la función clear

y también puedes aparcar el AlphaBlending de momento y usar el AlphaTest en su lugar.
#32
 Tienes activado el test de profundidad, glEnable(GL_DEPTHTEST).

Entonces cuando dibujas la textura grande, el test no pasa donde se dibujó la textura pequeña porque has especificado que solo se dibuje cuando sea menor: glDepthFunc(GL_LESS) y los estás dibujando a la misma profundidad.

Estás usando mezcla de colores (alphablending), no test alpha, lo cual quiere decir que los pixels que deberían ser transparentes tambien se dibujan, aunque con el color del fondo, ya que has establecido la siguiente operación glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

El resultado de la operación del pixel es

ColorTextura*GL_SRC_ALPHA + ColorFondo*GL_ONE_MINUS_SRC_ALPHA

Desde el punto de vista de OpenGL, el color maximo es 1.0 y el mínimo 0, aunque en una textura típica el valor máximo de un color sea 255.

Entonces, si el color alfa es 0, los pixels no se dibujan porque el color resultante es:

ColorTextura*0 + ColorFondo*(1 - 0)

si el color alfa es 1 , entonces todos los pixels se dibujan

ColorTextura*1 + ColorFondo*(1 - 1)

si el color alfa fuera 0.5, entonces quedaría una mezcla perfecta

ColorTextura*0.5 + ColorFondo*0.5

No se si me explico, con este método estas dibujando con el color azul del fondo, pero en realidad estas dibujando, y por lo tanto también se dibuja en el buffer de profundidad el valor. Cuando dibujas el siguiente objeto, donde dibujaste con el color azul no se pinta porque tambien se dibujó un valor de profundidad, y al ser igual mediante el test de profundidad no se dibuja.

AlphaBlending está bien para hacer objetos translúcidos pero si quieres dibujar con un test alpha tienes que usar:

glEnable(GL_ALPHA_TEST);

Si quieres que dibuje solo cuando alpha no sea 0:

glAlphaFunc( GL_NOTEQUAL, 0);

Si quieres seguir usando AlphaBlending puedes probar a desactivar el test de profundidad glDisable(GL_DEPTH_TEST);.

Si quieres seguir usando el test de profundidad prueba a dibujar usando también la coordenada z, entonces el test pasará cuando dibujes delante, aunque quizás pueda ser un follón que no te convenga de momento.

Bueno, espero haberte aclarado aunque no se si me he explicado bien, acabo de ver tu nuevo mensaje mientras empecé a escribír este, ahora lo leo porque si no me voy a hacer un lio.
#33
Off-topic / Opiniones Sobre La Futura Censura
26 de Diciembre de 2005, 03:55:21 PM
 La verdad es que es cierto que lo que cuenta la Cope y El Mundo crispa, enfada, y molesta. Igual le pasaba al regimen de Franco cuando alguien no seguía el dictado o se salía de la linea.

Yo les comprendo y me parece normal que quieran implantar la censura, si la gente se lo tolera porque se consideran la izquierda buena, bonita, y superprogreguay, pues es lógico.

Ahora...., que a mi estos neo-fachas no me engañan, y me temo que a mucha otra gente de izquierdas tampoco, afortunadamente.

#34
Programación gráfica / Dx7
26 de Diciembre de 2005, 03:22:23 PM
 Me equivoqué, puse que el alpha estaba en la textura, mejor indicarle el valor alpha en otra función ( color 0x80 en este caso ).


pDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP,  D3DTOP_SELECTARG1);
pDevice->SetTextureStageState( 0, D3DTSS_ALPHAARG1, D3DTA_TFACTOR );

pDevice->SetRenderState(D3DRS_TEXTUREFACTOR, 0x80000000);

pDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, TRUE );  
pDevice->SetRenderState( D3DRS_SRCBLEND, D3DBLEND_INVSRCALPHA);  
pDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_SRCALPHA);


creo que así valdría sin modificar el formato de vértice.
#35
Programación gráfica / Dx7
26 de Diciembre de 2005, 03:09:09 PM
 prueba también con esto:


pDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP,  D3DTOP_SELECTARG1);
pDevice->SetTextureStageState( 0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE );

pDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, TRUE );  
pDevice->SetRenderState( D3DRS_SRCBLEND, D3DBLEND_INVSRCALPHA);  
pDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_SRCALPHA);
#36
General Programadores / Cargar Textura Con Opengl
21 de Diciembre de 2005, 03:46:42 PM
 No entiendo por que no usas glTranslatef para desplazar el sprite, yo lo hago así y me va bien.

despues con el glRotatef lo giro.
#37
Off-topic / La Verdad
02 de Diciembre de 2005, 06:07:25 PM
 Si el lugar va a ser en un colegio yo propongo que sea en una época de principios o mediados del siglo XX.

más que nada por los objetos y el escenario siempre resultarán más emotivos, tristes, oscuros, y en aquellos tiempos los niños tenían más miedos, más dudas, más inquietudes por lo que no que les querían contar los mayores, confusión de mentiras y verdades, prohibiciones para casi todo, etc.

Aunque también por otro lado eso les hacia buscar las sensaciones de un modo más imaginativo, no había televisión, no había playstation para encerrarse en casa, no había una publicidad marcándoles el juguete de moda, o como tiene que pensar o vestir, por lo que encontraban la felicidad en cosas creadas por ellos mismos en su propio mundo, usando cuerdas, tizas, gomas, o jugando al juego del escondite, guerra de piedras, o metiendose a jugar en sitios peligrosos o cuando menos inquietantes como un cementerio.

Quizás el jugador podría ser de la época actual en una escuela abandonada y en semiruina y al meterse en el niño se transporta también a su época.
#38
Off-topic / Rianomos Un Poco
25 de Noviembre de 2005, 03:04:31 PM
 Muy cachondo :P  
#39
General Grafistas / El Neutrino Raro
14 de Noviembre de 2005, 11:02:14 PM
 No deja indiferente, la única pega que le veo es que como se ha dicho antes parece una aventura de mortadelo y filemón, yo le quitaría el "el".

raro si es desde luego.
#40
General Audio / Desencantado
14 de Noviembre de 2005, 10:58:30 PM
 
Cita de: "fiero"Hombre, lo de que un grupo se disuelva está a la orden del dia, pero lo que no me parece ni medio normal es que no contesten ni a un simple correo. Vamos, que es como para que pongas sus nombres aquí para no trabajar nunca con ellos.  (grrr)
Los nombres, apellidos, DNI, y hasta el color de los calzoncillos por listos.
más que nada para que no se la vuelvan a dar a otro.

Amenazalos publicamente con enviarles al disidente para darles un susto.
B)

saludos.
#41
Programación gráfica / Esferas
14 de Noviembre de 2005, 10:49:30 PM
 Tienes que usar la librería glu, que es como un complemento o una especie de librería adherida a OpenGL. Basta con incluir el archivo de cabecera glu.h, seguramente tendrás que enlazar la libreria glu32.lib

y así para crearla


GLUquadricObj *obj=gluNewQuadric();
gluSphere(obj, 10.0, 16, 16);
gluDeleteQuadric(obj);


Aquí están el resto de comandos:
GLU
#42
General / Un Mundo Singular
12 de Noviembre de 2005, 03:54:36 PM
 Debe ser por el costipao pero no me enteré muy bien, y creo que controlas más de lo que pensaba leyendo el post de "El problema es la elección" y relellendo este.

Bueno, pues dejemos ese último consejo mio para el que empieza de cero.

Haz caso a Colson2 y haz el pong, o si me apuras el arkanoid que tiene más variedad.

saludos.
#43
General / Un Mundo Singular
12 de Noviembre de 2005, 03:43:55 PM
 También puedes hacer cosas más sencillas incluso que un space invaders o un pong, como por ejemplo un juego de disparar a unos patos que van pasando o de recoger manzanas que van cayendo con una cesta, o cualquier otra chorradilla. lo que sea menos estar parado, intentando hacer cosas y cagandola tambien se aprende mucho.

Además tampoco creo que seguir al dedillo un tutorial sirva de mucho si no sabes lo que realmente estás haciendo, creo que hay que romperse un poco la cabeza y repetir una y otra vez las mismas cosas para cada vez hacerlo mejor y que se te queden grabadas en el subconsciente.

saludos y suerte.
#44
General Programadores / Problema Kn Visual Basic.
12 de Noviembre de 2005, 12:32:54 AM
 
Cita de: "Lord Trancos 2"pknokieresusarkontroles?
jajajajajajaja
#45
Off-topic / Elegir Logo
09 de Noviembre de 2005, 01:03:22 AM
 El 3º está bien, se me ocurre que el círculo podría ser un compac con sus reflejos típicos de colores que se extiendan a los lados y a las letras.

Ahora es que parece una fotocopia en blanco y negro.





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.