Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Hacer un fade

Iniciado por notoi, 24 de Marzo de 2009, 01:43:51 PM

« anterior - próximo »

notoi

 Para hacer un fade cual es la mejor manera?? probe a hacer una copia de la pantalla primaria en una surface que cree de forma temporal. Y en un bucle voy decrementando los pixeles y  haciendo la copia del buffer a la primaria. Pero se ve lentisimo. Algun consejo?? Estoy haciendo mi juego bajo directx 7, para empezar. Si lo acabo el siguiente ya mirare como va directx 9.

[EX3]

#1
Yo en DirectDraw jugaba con los canales RGB del factor Gamma, usando valores de 255 a -255 por canal. Aunque supongo que estarás tirando código en C++ te paso el enlace a un ejemplo que hace eso en Visual Basic 6.0 por si te sirve de ayuda:

http://directx4vb.vbgamer.com/DirectX4VB/Tutorials/DirectX7/DD_Gamma.asp

Si usaras Direct3D7 podrias usar un Quad (dos poligonos formando un cuadrado) pintado en negro y jugar con sus valores Alpha para regular la transparencia, que seria la misma forma en Direct3D8 y Direct3D9 respectivamente.

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

notoi

Gracias por la respuesta. Investigare eso de la gamma. Aps, mas bien estoy haciendolo en C, aunque tenia un libro de C++ que empeze a leer pero q no acabe y mas o menos estoy un poco familiarizado con las clases, constructores,etc.

IDandT

Cita de: [EX3] en 24 de Marzo de 2009, 03:19:10 PM
Yo en DirectDraw jugaba con los canales RGB del factor Gamma, usando valores de 255 a -255 por canal. Aunque supongo que estarás tirando código en C++ te paso el enlace a un ejemplo que hace eso en Visual Basic 6.0 por si te sirve de ayuda:

http://directx4vb.vbgamer.com/DirectX4VB/Tutorials/DirectX7/DD_Gamma.asp

Si usaras Direct3D7 podrias usar un Quad (dos poligonos formando un cuadrado) pintado en negro y jugar con sus valores Alpha para regular la transparencia, que seria la misma forma en Direct3D8 y Direct3D9 respectivamente.

Salu2...


Yo he usado alguna vez esa ultima opcion al trabajar con XNA. Creaba un Texture2D, de un solo pixel y lo pintaba escalado a pantalla completa variando el valor de canal Alpha. Es efectivo y muy simple de programar, al menos con XNA, DX u otra API que te permita hacerlo.

Lo de un solo pixel lo hacia por ahorrar memoria y coste de inicializacion. Da el mismo resultado hacer eso y escalarlo a toda la pantalla, que hacerlo del tamaño del area a cubrir directamente y volcarlo a pelo.






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.