Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Opacidad Y Video En Dd7, Ayuda Plis

Iniciado por Neko, 09 de Febrero de 2004, 12:38:52 AM

« anterior - próximo »

Neko

Holas... y gracias por adelantado a quienes puedan ayudarme a resolver un parde gran dudas

1. he buscado como poner una imagen con opacidad en DirectDraw7.. estoy usando Visual Basic 6... En todas las paginas que entro dice que eso no se puede, que hay que usar Direct3D, pero en la Surface tiene como opcion en BltFx un Alpha que creo que lo puede hacer posible

2. Quisiera saber como reproducir un video Mpeg en una Surface (usando Visual Basic 6 y DirectX7), porque eh probado con varias cosas pero ninguna funciona bien.

Grax por los que me puedan ayudar
i pudiera ser un personaje de Final Fantasy seria un Mogle

[EX3]

 Wenas, lo primero, olvidate de hacer AlphaBlending en Direct Draw 7 por ke eso es una tarea mortal para el ya ke no tiene soporte (aunque si extensiones como el parametro de la funcion BlitFx() :blink: ) para llevarlo a cabo y sobre todo por ke ya tienes ke andar con el historias de si estas utilizando 8/16/32 bits de color, bloquear/desbloquear la superficie, etc... Yo me tire mas de medio año intentado aplicar mi propio algorritmo para realizar el alphablend y no logre ke mi proyecto pasara de 10 fps. Al final porte mi proyecto a D3D donde consigo unos resultados muy buenos a parte de ciertos efectos de AlphaBlending muy buenos. Para comprobarlo tu mismo bajate este ejemplo: Ejemplo de AlphaBlending en DirectDraw7 en 16 Bits

Sobre lo de reproducir mpeg sobre una superficie eso ya no tengo ni pajolera idea, yo utilizo en mi proyecto DirectShow para reproducir videos como el mpeg y no lo hago a traves de surfaces.

Espero haberte servido de ayuda.

Salu2...

P.D.: Tb te diria ke te pasaras a C++ para lograr mas rendimiento, pero si hiciera eso iria en contra de mi naturaleza ya ke yo tb soy programador de VB xDDDDDDDDD
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

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

Neko

  :huh: Bueno... pos creo que tienes razón encuanto al Alpha Blending, yo ya llebo un mes y medio y nada, creo que la mejor forma serian rutinas en ensamblador (pero yo no se ensamblador <_< ), así que me quedare con D3D para ese efectillo... en cuanto al video... DirechShow funciona muy bien para meterlo en una presentacion al estilo Age of Empires o quisas para narrar una parte de la historia de un juego, pero yo lo quiero usar como un fondo para el pleno juego... es por eso que lo quiero reproducir en una surface...

.. de cualquier modo, Grax por contestar tan rapido... seguiré buscando.. :)  
i pudiera ser un personaje de Final Fantasy seria un Mogle

Zaelsius

 Veo más fácil utilizar DirectShot(DX8 ó 9) para reproducir el vídeo en una ventana, y utilizar la API de Windows 2000/XP para darle un factor de transparencia.

Lo primero está en la DirectX SDK(hay ejemplos), y lo segundo puedes comprobar que es muy fácil en el último código de la semana que mandé.

Ahora, no sé si eso te serviría, pq no sé que donde lo vas a usar. Es una opción quizá más fácil de hacer en C++, pero en VB tambien se podria.

En fin..por dar opciones que no quede  :rolleyes:

Edit: acabo de leer tu respuesta, así que lo mejor es que te pases a DX8/9 y utilices DirectShow para pintar en una textura/superficie.

[EX3]

 Neko dijo:
Citarcreo que la mejor forma serian rutinas en ensamblador (pero yo no se ensamblador  <_< ),
Hombre, existe una libreria dll para VB con rutinas escritas en C++ y ensamblador para crear efectos de alphablending en DirectDraw, pero solo en 16bits, ke eso a mi por lo menos me resulta un grave inconveniente por ke limita mucho el programa.

No he tenido el gusto de poder probar en su tiempo esa dll pero el resultado era weno, aunque sin punto de comparacion con D3D, ademas, ke para mi por lo menos, llenar de dlls un programa para ke realize alphablend, rotacion de graficos, calculo de colisiones, etc... me parece algo molesto e incomodo y ke suele dar diversos problemas (si no fijate en Windows xDDDDDD). Yo opto mas por encapsular todo en una misma dll (y no en el mismo exe ya que una dll no ocupa tanta memoria en tiempo de ejecucion ke si tuvieras todas la rutinas en el mismo ejecutable) para asi ser mas comodo de utilizar y liar menos el programa.

ZaelSiuS dijo:
CitarVeo más fácil utilizar DirectShot(DX8 ó 9) para reproducir el vídeo en una ventana, y utilizar la API de Windows 2000/XP para darle un factor de transparencia.
Vuelvo a lo mismo ke comente con la dll, limitas el programa a ciertos sistemas cuando lo ideal seria ke fuera compatible en cualquier S.O., es este caso cualquier windows, a parte de ke este metodo ke propones no valdria para lo ke kiere hacer ke es usar un video como fondo animado en su juego.

Y ahora una pregunta ke yo me hago, el renderizar un video sobre una superficie es optimo en un juego???

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

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

Zaelsius

 
Citar
Y ahora una pregunta ke yo me hago, el renderizar un video sobre una superficie es optimo en un juego???

Pues, si usamos la definición de eficiencia(balance entre recursos empleados y resultados obtenidos), supongo que dependerá de lo bonito que le quede el efecto y de la CPU que consuma.

Me he molestado en ver el ejemplo concreto de DirectShow + D3D en la DXSDK9:

Citar
Texture 3D sample:

Draws video on a Microsoft DirectX 8.0 texture surface. This sample builds on the Direct3D Tutorial05 sample, adding support for rendering video onto a Direct3D surface.

Así que el ejemplo es muy claro y fácil para cortar/pegar. Dada la dificultad del infierno de DirectDraw, creo que es más sencillo dedicar un poquito de tiempo a aprender lo básico de DirectGraphics y usar ese ejemplo como base.






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.