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 - [EX3]

#5161
                                EUREKA!!!

Al fin lo consegui!!!  :D
Device.SetTextureStageState 0, D3DTSS_ALPHAOP, D3DTOP_MODULATE
Esta linea es la que me ha solucionado el problema. Ya consigo hacer AlphaBlending y respetando el ColorKey. Encontre esta linea en el codigo que AK47 me posteo antes. Me dio por ir probando locuras y al final salio! Muchas gracias de nuevo a todos por vuestra ayuda!  :D

Salu2...

P.D.: AK47, estare encantado de echar un vistazo a ese codigo cuando lo subas, seguro que me sirve de ayuda en mi proyecto.  :ojo:                                
#5162
                                Nas AK47, he probado tu codigo y... no me ha funcionado :llorando: (esto ya es desesperante) Lo unico que consigo es ke se me kede la pantalla en blanco (cuando RGBA(255,255,255,255), claro) pero vamos, ke ni alphablend ni nada. Mi programa esta maldito o yo estoy ciego!!!

Weno, ante todo muchas gracias por tu ayuda  :D

Salu2...                                
#5163
                                He ojeado la web, ke por cierto me ha parecido interesante, y he visto como se inicializa el AlphaTest. La ayuda del SDK lo inicia igual, y asi lo tengo en el motor:
Device.SetRenderState D3DRS_ALPHATESTENABLE, 1

Device.SetRenderState D3DRS_ALPHAREF, &H1

Device.SetRenderState D3DRS_ALPHAFUNC, D3DCMP_GREATEREQUAL

pero no veo ke haga nada en particular  :-?.

Seguire buscando y revisando el codigo. Lo dicho, si logro hacer ke tire te aviso  :ojo:

Gracias :D

Salu2...                                
#5164
                                No se si en el ejemplo en ke me base estaba bien implementado o no, pero el doble filtrado o Bilinear ya lo tenia activo:
Device.SetTextureStageState 0, D3DTSS_MAGFILTER, D3DTEXF_LINEAR
y era la causa de ke se me viese tan mal las imagenes  :o , desactivando el filtrado el suavizado es casi identico al del DirectDraw, asi ke por el momento se va a kedar asi, sin filtrado  :-? .

Respecto al VB mezclado con DirectX... tio, ke yo no controlo todavia lo suficiente en C++ como para meterme de lleno con las DirectX!!! :(  Todavia me keda mucho camino, mientras mato el rato con el VB... jeje

Enga, gracias por la ayuda  :D

Salu2...                                
#5165
                                Sigo sin conseguir ke el AlphaTest tire y tampoco logro el AlphaBlend con le metodo de los vertices (si he conseguido tintar las texturas al dibujarlas, pero el parametro Alpha se lo pasa por el forro). O algo sigo haciendo mal o algo me he dejado por el camino, nu se  :-?.

MChiz has logrado hacer funcionar el AlphaTest?

Salu2...                                
#5166
                                Nas:

Me estoy dando cuenta que Direct Graphics no me dibuja los graficos con el suavizado ke yo esperaba, no suaviza mucho los pixeles en comparacion con DirectDraw. Me gustaria saber como podria (si es ke se puede) suavizar mas la textura al dibuajarla en D3D8.

Aprovecho tb para comentar otro asuntillo relacionado con la Clase D3DXSprite de DirectGraphics. He empezado a utilizar la clase y me funciona "bien", el alphablend me lo hace perfecto, cosa que es lo ke yo buscaba solucionar en el anterior post, pero por ejemplo, tengo problemas con el tamaño del sprite al dibujarlo, no logro hacer que me dibuje el sprite con la dimension original de la textura.
Se supone (me suponia) ke si la escala es a 1 deberia respetar las dimensiones del sprite, no ke me lo dibuja al doble del tamaño e igualando la medida tanto en altura como en anchura (un cuadrado). Es normal?
Tb tengo un problemilla con las coordenadas, como veo ke el parametro de las coordenadas es de tipo Single (En C++ Float, creo) no logro pasarle coordenadas negativas (-10,-20 por ejemplo), hay alguna manera de hacerlo o no se puede?

Weno, espero que alguien pueda ayudarme, gracias  :)

Salu2...                                
#5167
                                Si no son examenes son trabajos, etc... ,si tamos todos casi igual, la vida del estudiante, ke dura es  :D                                
#5168
                                Las texturas las cargo con esa funcion, ya ke si no no podria especificar el ColorKey.

Todavia tengo ke implementar en el modulo grafico la clase D3DXSPRITE, por ke todavia trabajo al metodo antiguo (crear el poligono y pintar la textura).

Voy a ojear los tutos de esa web, lo malo es ke no podre sera compilar los ejemplos para probarlos, ya ke trabajo en VB y no tengo a mano el VC++ (se me casco el CD :-? ) pero con los tutos me basta.

Muchas gracias por la ayuda, ZaelSius!  :D

MChiz, si consigues hacer algo con el AlphaTest me gustaria ke me lo enseñaras, ok? y si lo consigo yo, lo mismo. :ojo:

Salu2...                                
#5169
                                Mas ke nada darte las gracias por haberlo intentarlo  :D                                
#5170
                                Ke va, simplemente son BMPs normales y corrientes.                                
#5171
                                Con el D3DBLEND_ONE si me respeta el ColorKey, por ke el fondo del sprite es azul puro RGB(0,0,255), si tuviese ke pintar toda la textura el fondo tb se veria. Aki tienes la imagen:

http://usuarios.lycos.es/dxlib32/images/Te...est/Soldier.bmp (72k)

En D3D7 el uso del ColorKey se activaba desde SetRenderState:
Device.SetRenderState D3DRENDERSTATE_COLORKEYENABLE, 1
pero en D3D8 no esta ese codigo. En D3D8 el ColorKey parece estar activo con estas lineas:
Device.SetRenderState D3DRENDERSTATE_ALPHABLENDENABLE, 1

Device.SetRenderState D3DRS_SRCBLEND, D3DBLEND_SRCALPHA

Device.SetRenderState D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA


Estas lineas si no me equivoco son las ke se usan para hacer AlphaBlend.
Seguire probando el AlphaTest, a ver si con el soluciono el problema.

Salu2...                                
#5172
                                Si no recuerdo mal, la cara utiliza el D3DBLEND_ONE, ke segun la intensidad del color, mientras mas osucro mas transparente y mas claro menos. Con ese metodo no tengo problemas. A la textura que da vueltas se le aplica el alphablend normal y corriente, esa es la tecnica que me esta dando la lata, por ke el alphablen si me lo hace, pero me pinta las zonas vacias de la textura. Eso es lo ke estoy intentando arreglar, sin tener exito.                                
#5173
                                Bajate el ejemplo del ke me base para hacer el hibrido entre DirectDraw & Direct3D, de ahi saque el codigo para el alphablend:
http://usuarios.lycos.es/dxlib32/publico/direct5d.zip
Por cierto, el ejemplo no hacia la transparencia del ColorKey, pero si lo acticvas te lo hace. Sinceramente, este ejemplo es un poco chapuza, jeje

Estuve haciendo algunas pruebas con el AlphaTest, ke al final lo encontre en el *.CHM, pero no logre hacer que funcionase. Todavia estoy buscando por la red, a ver si encuentro algun ejemplo que tire, ya sea en C++ o VB, mientras tire.

Salu2...                                
#5174
                                El CHM.* lo tengo y algo vi del AlphaTest, probare por mi cuenta a ver ke saco en claro, y si te decides hacer el ejemplo y decides compartirlo te lo agradeceria mucho  :D

Aun asi me mosquea ke de la otra manera me funcionase en Dx7 y no me tire en Dx8  :(

Salu2...                                
#5175
                                Pos la ayuda del SDK de las DirectX para mi nunca ha sido muy clara ke digamos y ejemplos de AlphaBlend habia uno o dos creo y tampoco son muy sencillos de comprender, al menos para mi  :oops: y en la web ke miraba cada cierto tiempo, vbdx4 o algo parecido, del amigo Hoxley, no trabajan mucho el tema del alphablend.

Weno, cuando tenga algo de tiempo libre seguire buscando por ahi, ke por narices tendre que encontrar algo, digo yo.

Salu2...                                





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.