Foros - Stratos

Programadores => Programación gráfica => Mensaje iniciado por: [EX3] en 06 de Mayo de 2003, 08:56:39 PM

Título: Problemas al hacer alphablend con Direct Graphics
Publicado por: [EX3] en 06 de Mayo de 2003, 08:56:39 PM
                                Nas:

Tengo problemas al realizar alphablend sobre una textura en Direct Graphics, el alphablend me lo hace pero no respeta el ColorKey de la transparencia de la textura, en vez de omitir el color que no debe dibujar lo muestra en negro.

El codigo que uso lo saque de un ejemplo de Direct3D7:



           Device.SetRenderState D3DRENDERSTATE_ALPHABLENDENABLE, 1

           Device.SetRenderState D3DRS_SRCBLEND, D3DBLEND_SRCALPHA

           Device.SetRenderState D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA

           Device.SetRenderState D3DRS_TEXTUREFACTOR, D3DColorRGBA(255, 255, 255, AlphaBlendValue)

           Device.SetTextureStageState 0, D3DTSS_ALPHAARG1, D3DTA_TFACTOR





Si hay otra forma de hacer el alphablend en Direct Graphics agradeceria que me la explicaran.

Gracias y Salu2...

[EX3]                                
Título: Problemas al hacer alphablend con Direct Graphics
Publicado por: BeRSeRKeR en 07 de Mayo de 2003, 08:10:41 PM
                                Aquí tienes un tuto que escribí hace tiempo sobre alpha blending:

http://www.arrakis.es/~jonathan01/programm...g/D3D8/tut6.htm

Saludos                                
Título: Problemas al hacer alphablend con Direct Graphics
Publicado por: [EX3] en 08 de Mayo de 2003, 02:01:26 AM
                                He visto tu tutorial sobre AlphaBlend y esta muy interesante, pero ese metodo, por lo que he visto, no me permite hacer alphablending progresivo, vamos, que no puedo decirle que intensidad de transparencia tiene que darle a la textura al renderizar, corrigeme si me equivoco, que en d3d toadavia estoy tan verde como RGB(0,255,0) :jaja:.

Esto es lo que conseguia hacer en una version de la dx_lib32 que era un hibrido entre DirectDraw y Direct3D 'Inmediate Mode' (DirectX 7), ahi utilizaba el codigo anterior y parecia que funcionaba:
http://usuarios.lycos.es/dxlib32/images/OldVer/01.JPG
http://usuarios.lycos.es/dxlib32/images/OldVer/02.JPG

Esto es lo que me ocurre con Direct Graphics utilizando el mismo codigo:
http://usuarios.lycos.es/dxlib32/images/Test/101.jpg                                
Título: Problemas al hacer alphablend con Direct Graphics
Publicado por: BeRSeRKeR en 08 de Mayo de 2003, 10:56:47 AM
                                No estoy seguro de entenderte....¿te refieres a por ejemplo especificar en el canal alpha un degradado de blanco a negro (pasando por todas las tonalidades de grises) y que después a la hora del render se realice la transparencia progresivamente?.

Si es eso, entonces los texture stage states necesarios serían, y lo digo de memoria ( y mi memoria es muy mala :jaja:):

g_pD3DDev->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);

g_pD3DDev->SetTextureStageState(0, D3DTSS_COLOROP,   D3DTOP_SELECTARG1);

g_pD3DDev->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);

// Esto es lo que hace el degradado progresivo

g_pD3DDev->SetTextureStageState(0, D3DTSS_ALPHAOP,   D3DTOP_MODULATE);

g_pD3DDev->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);


Hmm....por cierto, el texture factor no te hace falta para el alpha blending...a no ser que quieras conseguir alguna cosa rara :D...

Saludos                                
Título: Problemas al hacer alphablend con Direct Graphics
Publicado por: [EX3] en 09 de Mayo de 2003, 12:08:17 AM
                                Es mas sencillo, me refiero al alphablending tradicional, ese que le pasas como parametro la intensidad de transparencia que tendria la textura entera, solo que no se por que no me respeta el ColorKey de la textura, color que no tiene ke dibujar.

Me mosquea que acabo de encontrar un ejemplo que hace lo que yo kiero, utilizando bitmaps. Es un ejemplo de mecanica de particulas, cada particula es un pequeño bitmap que se va haciendo mas transparente dependiendo de la distancia, pero no logro entender el codigo responsable del alphablend. Seguire ojeandolo, ke insistiendo se consigue todo, jeje  :ojo:

Por cierto, lo del D3DRS_TEXTUREFACTOR me venia en el codigo del ejemplo de DirectX7 y sin el no funcionaba el alphablend.

Salu2...                                
Título: Problemas al hacer alphablend con Direct Graphics
Publicado por: MChiz en 09 de Mayo de 2003, 07:47:53 AM
                                Buenas!
Porque no pruebas a utilizar el AlphaTest? En teoria acelera mucho, ya que a todo lo que no se tenga que pintar no se le hace el AlphaBlending.
Suerte!                                
Título: Problemas al hacer alphablend con Direct Graphics
Publicado por: [EX3] en 12 de Mayo de 2003, 12:48:27 AM
                                Hombre, el tema no es ke haga el alphablend a las zonas con el ColorKey, simplemente ke no las dibuje.

Por cierto, ¿Sabes de algun tuto que explique el uso del AlphaTest?
Gracias.

Salu2...

P.D.: Al final no he logrado entender el funcionamiento del alphablend de akel ejemplo ke me baje, a parte de la ayuda ke me podais brindar seguire buscando por ahi.                                
Título: Problemas al hacer alphablend con Direct Graphics
Publicado por: MChiz en 12 de Mayo de 2003, 01:40:14 PM
                                Pues no, no se ninguno. Pero estoy seguro que habra algun sample en las SDK de D3D. Y si no mira la ayuda, que esta mamao ( almenos en GL ).
Suerte!                                
Título: Problemas al hacer alphablend con Direct Graphics
Publicado por: [EX3] en 12 de Mayo de 2003, 08:49:10 PM
                                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...                                
Título: Problemas al hacer alphablend con Direct Graphics
Publicado por: MChiz en 12 de Mayo de 2003, 10:23:45 PM
                                Tienes el .CHM que viene con el SDK de DirectX? Ahi te viene la ayuda.
La funcion en cuestion es SetRenderState. Le pasas D3DRS_ALPHATESTENABLE y luego retocas el AlphaFunc... mas o menos :b
A las malas, si quieres, intento hacer un ejemplo. Total, me tengo que poner ya con DirectX...                                
Título: Problemas al hacer alphablend con Direct Graphics
Publicado por: [EX3] en 15 de Mayo de 2003, 01:57:34 AM
                                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...                                
Título: Problemas al hacer alphablend con Direct Graphics
Publicado por: MChiz en 15 de Mayo de 2003, 01:19:52 PM
                                Vale. Pues cuando haga mis cosillas con D3D, mirare lo del AlphaTest. Aun asi, estoy seguro de que por aqui habra alguien que lo tenga hecho. Asi que si alguien le puede ayudar... Venga hombre, que solo son dos lineas ( creo :b )!!
Si lo consigues por tu cuenta, avisa! : )
A mi tambien me parece raro que en D3D7 se rulase, y ahora no. Seguro que lo haces todo igual?                                
Título: Problemas al hacer alphablend con Direct Graphics
Publicado por: [EX3] en 15 de Mayo de 2003, 04:21:30 PM
                                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...                                
Título: Problemas al hacer alphablend con Direct Graphics
Publicado por: MChiz en 15 de Mayo de 2003, 05:25:32 PM
                                mmm... entonces lo que quieres conseguir es el efecto que aparece en la demo que me has dado. Cual de tantos es? Creo que el de los ojos del centro de la pantalla, no?                                
Título: Problemas al hacer alphablend con Direct Graphics
Publicado por: [EX3] en 16 de Mayo de 2003, 01:35:28 AM
                                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.                                
Título: Problemas al hacer alphablend con Direct Graphics
Publicado por: MChiz en 16 de Mayo de 2003, 11:33:27 AM
                                Yo diria que la cara no utiliza el modo de blending ONE. Pero bueno, creo que ahora ya te entiendo. Es mas, creo que, teoricamente, lo que quieres hacer, no se puede hacer. Te explico:
Con el modo de blending ONE no tienes problemas, porque las zonas donde no hay nada en la textura, vale cero. El modo de blending ONE es aditivo, por lo que suma a lo que hay en el frameBuffer, el fragmento de la textura que le toca. Y asi tienes que si le sumas 0, el pixel se queda igual. Ahora bien, el modo de blending que quieres hacer es combinativo, por lo que multiplica. Asi tienes que cuando multiplicas por 0, se queda negro. Me he remirado una vez mas las imagenes que has puesto anteriormente, y estoy casi 100% seguro de que lo que necesitas es el AlphaTest.
A ver si lo puedes probar rapido y me dices algo : )                                
Título: Problemas al hacer alphablend con Direct Graphics
Publicado por: [EX3] en 16 de Mayo de 2003, 02:09:49 PM
                                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...                                
Título: Problemas al hacer alphablend con Direct Graphics
Publicado por: MChiz en 16 de Mayo de 2003, 03:18:28 PM
                                Si en D3D7 tenias que activar el ColorKey, quiere decir que en D3D8 tendras que activar AlphaTest. Estoy seguro.
Y sobre lo que dices del modo de blending ONE... la imagen que utilizas tiene canal alpha?                                
Título: Problemas al hacer alphablend con Direct Graphics
Publicado por: [EX3] en 16 de Mayo de 2003, 06:36:55 PM
                                Ke va, simplemente son BMPs normales y corrientes.                                
Título: Problemas al hacer alphablend con Direct Graphics
Publicado por: MChiz en 16 de Mayo de 2003, 07:50:42 PM
                                Entonces no lo entiendo...
En fin, dale al AlphaTest y ya me diras. Siento no saber como darte mas ayuda : (                                
Título: Problemas al hacer alphablend con Direct Graphics
Publicado por: [EX3] en 16 de Mayo de 2003, 08:24:37 PM
                                Mas ke nada darte las gracias por haberlo intentarlo  :D                                
Título: Problemas al hacer alphablend con Direct Graphics
Publicado por: MChiz en 17 de Mayo de 2003, 01:54:48 AM
                                De nada hombre!! Ojala pudiera darte mas ayuda. No tienes porque darme las gracias : )
Suerte con el tema!                                
Título: Problemas al hacer alphablend con Direct Graphics
Publicado por: Zaelsius en 17 de Mayo de 2003, 04:35:36 PM
                                Bueno, aquí está la solución al problema, y sé que funciona ;-)


-Utiliza D3DXLoadTextureFromFileEx() para cargar la textura, teniendo en cuenta el parámetro ColorKey. El prototipo es:





HRESULT D3DXCreateTextureFromFileEx(LPDIRECT3DDEVICE9 pDevice,

   LPCTSTR pSrcFile,

   UINT Width,

   UINT Height,

   UINT MipLevels,

   DWORD Usage,

   D3DFORMAT Format,

   D3DPOOL Pool,

   DWORD Filter,

   DWORD MipFilter,

   D3DCOLOR ColorKey,

   D3DXIMAGE_INFO *pSrcInfo,

   PALETTEENTRY *pPalette,

   LPDIRECT3DTEXTURE9 *ppTexture

);





Ahí especificas el color que indicará las zonas SIEMPRE TRANSPARENTES.

-Utiliza D3DXSprite para dibujar, ya sea mediante Draw() para 2d o DrawTransform() para 3d. Con el parámetro Color PUEDES TANTO MODULAR EL COLOR COMO LA TRANSPARENCIA FINAL del sprite dibujado.





HRESULT Draw(          LPDIRECT3DTEXTURE9 pSrcTexture,

   CONST RECT *pSrcRect,

   CONST D3DXVECTOR2 *pScaling,

   CONST D3DXVECTOR2 *pRotationCenter,

   FLOAT Rotation,

   CONST D3DVECTOR2 *pTranslation,

   D3DCOLOR Color

);





Luego con una llamada del tipo:



miSprite->Draw(..,..,..,..,..,D3DCOLOR_RGBA(255,255,255,128));



Pintas el sprite con su color original, pero al 50% de transparencia.

Hay dos maneras más de hacer esto, pero una es guarrenado con la API de WIn32 al cargar las texturas y la otra es mediante PixelShaders.

Más información la puedes hallar en los tutoriales de DX de http://www.32bits.co.uk, donde se discute este tema, y se realizan varias clases para encapsular sprites, etc. Para mí son los mejores tutoriales, y no está de más leerselos aunque ya creas que sabes DX, porque
siempre comentan otras cosillas sobre la marcha y que conviene saber.

Más concretamente te puedes bajar el tuto de sprites, compilarlo, y probar a modificar algunos valores.                                
Título: Problemas al hacer alphablend con Direct Graphics
Publicado por: [EX3] en 17 de Mayo de 2003, 11:40:48 PM
                                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...                                
Título: Problemas al hacer alphablend con Direct Graphics
Publicado por: MChiz en 18 de Mayo de 2003, 11:42:22 AM
                                De acuerdo! : ) Pero no se cuando me pondre a ello. Tengo muchas cosas que hacer : (
Espero que te salga pronto.                                
Título: Problemas al hacer alphablend con Direct Graphics
Publicado por: [EX3] en 18 de Mayo de 2003, 04:59:12 PM
                                Si no son examenes son trabajos, etc... ,si tamos todos casi igual, la vida del estudiante, ke dura es  :D                                
Título: Problemas al hacer alphablend con Direct Graphics
Publicado por: [EX3] en 29 de Mayo de 2003, 06:41:54 PM
                                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...                                
Título: Problemas al hacer alphablend con Direct Graphics
Publicado por: MChiz en 29 de Mayo de 2003, 11:18:30 PM
                                : ((((
Que va, lo siento muchisimo, en serio. Ahora estoy con otros temas, antes de pasarme a D3D.
Pero he encontrado algo que quizas pueda ayudarte:
http://www.computersciencelab.com/Direct3DTut1.htm

Si no te sirve, mira de buscar en google.
Suerte!                                
Título: Problemas al hacer alphablend con Direct Graphics
Publicado por: [EX3] en 30 de Mayo de 2003, 12:34:09 AM
                                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...                                
Título: Problemas al hacer alphablend con Direct Graphics
Publicado por: MChiz en 30 de Mayo de 2003, 02:41:57 AM
                                Me alegro que te haya gustado la web, pero siento que no te sirviera de nada : ((((
Espero que te salga pronto. Avisa, ehh!?? :bb
Adioos!!                                
Título: Problemas al hacer alphablend con Direct Graphics
Publicado por: AK47 en 01 de Junio de 2003, 02:15:47 PM
                                Saludos
Yo tambien he estado trasteando con Direct3D 9 para pintar sprites para mi juego 2D. Hace tiempo use el D3DXSprite pero me iva terriblemente lento en mi savage 4 (es una patata pero bueno). Luego vi los experimentos que hizo un colega tirando de poligonos a pelo y me iva follao en mi cutre tarjeta. Resumiendo, tira de poligonos, ya que asi puedes optimizar el cambio de textura y tal.
Bueno, yo lo hago de esta forma:
Uso una perspectiva ortogonal.
Defino el formato del vertice como D3DFVF_XYZ | D3DFVF_DIFFUSE | D3DFVF_TEX1.
Defino el quad con 2 poligonos y lo renderizo como un trianglestrip. El quad es de 1x1. Para pintar un sprite lo escalo al tamaño que requiero. Como uso una proyeccion ortogonal, al escalar el quad consigo una relacion de 1:1 entre el tamaño logico y tamaño de pixel. Osea que si escalo el sprite por 100 en X y 100 en Y, obtengo un sprite de tamaño 100x100 pixels.
Al cargar las texturas de los sprites con D3DXCreateTextureFromFileEx fijo el color que sera el colorkey. Las texturas tienen que ser potencias de 2, ya que sino la funcion escala la textura a la siguiente textura y el asunto queda hecho un asco.
Al pintar el sprite, realizo las siguientes operaciones:


g_pd3dDevice->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);

g_pd3dDevice->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_DIFFUSE);

g_pd3dDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_ADD);

g_pd3dDevice->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);

g_pd3dDevice->SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE);

g_pd3dDevice->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE);

g_pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);

g_pd3dDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);

g_pd3dDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);

g_pd3dDevice->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);

g_pd3dDevice->SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR); // Filtrado bilineal

Con estas operaciones consigo que no se pinten los pixels que son iguales al colorkey, y ademas, mediante el alpha del componente diffuse del vertice puedo definir el nivel de transparencia de los pixels que se pintan.
Se pueden cambiar los D3DTSS_COLOROP y D3DTSS_ALPHAOP para probar diferentes efectos. Obviamente, no se realizaran todas estas llamadas cada vez que se pinte un sprite, sino que se llamaran una vez, se pintaran los sprites y luego se desactivaran. Pero bueno, eso ya es relativo a la implementacion.
Espero que sirva de ayuda. A mi me sirve :)                                
Título: Problemas al hacer alphablend con Direct Graphics
Publicado por: [EX3] en 23 de Junio de 2003, 04:31:03 PM
                                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...                                
Título: Problemas al hacer alphablend con Direct Graphics
Publicado por: AK47 en 24 de Junio de 2003, 06:35:39 PM
                                De nada hombre ;)
Cuando pongan el codigo de la semana que envie... (ejem) bajatelo. Es un ejemplo de Vertex Shader muy simple en 2D. El programa pone sprites en la pantalla saltando, rotando, cambiando de color y de nivel de transparencia, vamos, pone sprites usando Direct 3D sin tirar del ID3DXSprite ese :)                                
Título: Problemas al hacer alphablend con Direct Graphics
Publicado por: [EX3] en 25 de Junio de 2003, 01:23:06 AM
                                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:                                
Título: Problemas al hacer alphablend con Direct Graphics
Publicado por: MChiz en 25 de Junio de 2003, 12:59:37 PM
                                : ))))))

Felicidades!!!!!!!                                
Título: Problemas al hacer alphablend con Direct Graphics
Publicado por: AK47 en 25 de Junio de 2003, 06:56:14 PM
                                Mecauen la leche! Como que gracias a todos?  :enfadado: En fin... tendre que compartir con los demas tu gratitud... XDD
A ver cuando suben mi ejemplo de vertex shader. No es algo increible, pero muestra como cambiar ciertos valores sin hacer un solo lock :)                                
Título: Problemas al hacer alphablend con Direct Graphics
Publicado por: Zaelsius en 26 de Junio de 2003, 12:04:28 PM
                                Ahora antes de aprender C++ hay que aprender el MS Visual Copy-Pasting XD.

No sé como se te pudo pasar eso... :!:                                
Título: Problemas al hacer alphablend con Direct Graphics
Publicado por: BeRSeRKeR en 28 de Junio de 2003, 01:53:49 AM
                                ¡¡AK47 tio, no quieras llevarte toda la gloria!!  :ojo:

Este es uno de los primeros posts que puse (si no recuerdo mal el 4º). Fíjate en la 5ª línea del código...

CitarNo estoy seguro de entenderte....¿te refieres a por ejemplo especificar en el canal alpha un degradado de blanco a negro (pasando por todas las tonalidades de grises) y que después a la hora del render se realice la transparencia progresivamente?.

Si es eso, entonces los texture stage states necesarios serían, y lo digo de memoria ( y mi memoria es muy mala :jaja:):

g_pD3DDev->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);

g_pD3DDev->SetTextureStageState(0, D3DTSS_COLOROP,   D3DTOP_SELECTARG1);

g_pD3DDev->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);

// Esto es lo que hace el degradado progresivo

g_pD3DDev->SetTextureStageState(0, D3DTSS_ALPHAOP,   D3DTOP_MODULATE);

g_pD3DDev->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);


Hmm....por cierto, el texture factor no te hace falta para el alpha blending...a no ser que quieras conseguir alguna cosa rara :D...

Saludos

De todas formas, me alegro que lo hayas conseguido al fin :)

¡Ale, un saludo!                                
Título: Problemas al hacer alphablend con Direct Graphics
Publicado por: AK47 en 28 de Junio de 2003, 10:45:28 AM
                                Vale vale berserker, no me llevo toda la gloria. Para ti un poquito, ala ;)