Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





[vb][d3d7] Drawtext()

Iniciado por Abc7, 30 de Enero de 2006, 03:54:01 AM

« anterior - próximo »

Abc7

 Bueno, no soy de revolotear mucho los foros, y no es mi intencion, simplemente estaba trabajando en un viejo programa D3D7 y me surgieron muchas dudas.
El engine que uso es el ya clasico Hibrido (D3D7+DD7), y se me complica ahora a la hora de dibujar texto.
El problema es que el texto dibujado con DirectDraw.DrawText() queda debajo de lo dibujado con D3D (con las primitivas).
Esto pasa cuando sigo el siguiente esquema:BeginScene

' Dibujo primitivas

' Dibujo texto

EndScene

Flip

Ahora, al cambiarlo por:BeginScene

' Dibujo primitivas

EndScene

' Dibujo texto

Flip

De este modo queda el texto arriba de lo dibujado con D3D.
Por eso se me habia ocurrido que cada llamada a DrawText() almacene el string y la posicion en un array, que sera recorrido entre el EndScene  y el Flip, donde en realidad se llamaria a DirectDraw.DrawText().
Igualmente se me complicaria a la hora de tener que ocultar parte del texto, es decir, por ejemplo, mover un formulario sobre otro, haria que se vea parte del texto de titulo. Haciendo este sistema no me dejaria hacerlo.

Asi que si tienen alguna ayuda, sera bienvenida. Habia leido sobre el DX3DFont, pero esta solo disponible para D3D8, y yo estoy trabajando en D3D7 (y se me complicaria mucho pasar todo a D3D8, ya que el proyecto esta bastante avanzado).

Gracias de nuevo ^^!
Y perdon por molestar tanto.

[EX3]

 Con que llames una vez al BeginScene() despues de llamar a Flip() y a EndSecene() antes de llamar a Flip() te ahorras quebraderos de cabeza y logras mas velocidad:

Bucle
   Dibujo primitivas
   Dibujo texto

   EndScene()
   Flip()
   BeginScene()

Fin Bucle

Asi lo tengo yo en la dx_lib32.

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

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

Abc7

 
Cita de: "[EX3"] Con que llames una vez al BeginScene() despues de llamar a Flip() y a EndSecene() antes de llamar a Flip() te ahorras quebraderos de cabeza y logras mas velocidad:

Bucle
   Dibujo primitivas
   Dibujo texto

   EndScene()
   Flip()
   BeginScene()

Fin Bucle

Asi lo tengo yo en la dx_lib32.

Salu2...
Gracias, ya lo inclui asi en mi codigo fuente ^^!.. aunque eso no resolvio mi problema.

Lo unico que se me ocurre ahora es que cada vez que quiera dibujar un texto, cree una superficie DirectDraw y ahi dibuje el texto, y luego use esa superficie como una textura para lo que quiera dibujar en Direct3D.
¿Algun dato sobre el rendimiento de este metodo?

¿Algun metodo rapido para dibujar texto con Direct3D7?

Gracias y saludos!

[EX3]

 
Cita de: "Abc7"¿Algun metodo rapido para dibujar texto con Direct3D7?
Pues no sabria decirte, ya que este problema que comentas no recuerdo haberlo tenido yo en su dia cuando aun trasteaba con DDraw7+D3D7.

Solo te aclaro que me pase a DirectX8 por que DirectGraphics (D3D8) me solucionaba un monton de problemas que me encontraba en DDraw7+D3D7, problemas que generaban un rendimiento muy pesimo. Aun asi, las funciones de dibujo de texto de DirectX son harto lentas.

Yo estoy implementando un sistema de fuentes graficas para la dx_lib32 que iria mas rapido que las funciones de dibujo de fuentes TrueType (las fuentes de TrueType son graficos vectoriales, ahi esta el problema de rendimiento, en transformar un grafico vectorial a un mapa de bits cada vez que llamas a la funcion de dibujo de textos) y me permitiria tambien aplicar mas efectos al texto a parte de transparencias.

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

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






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.