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.
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...
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.
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.