Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





2 preguntas y/o problemas

Iniciado por isokyvb, 04 de Septiembre de 2006, 05:23:04 AM

« anterior - próximo »

isokyvb

tengo las siguientes dudas:

1º: los ejemplos que vienen con la DXlib traen la forma de renderizado
usando el bucle looping y esas cosas, pero me entro la duda cuando no pude llamar funciones externas desde el programa principal hacia los modulos lo cual al llamarlas la pantalla se me queda negra y tengo que finalizar el programa antes de que se me cuelgue, no es problema de codigo puesto que quitando la funcion se acaba el problema y adaptandola dentro del bucle funciona perfecto, lo otro que vi que en algunos ejemplos tambien ocupan el control timer para hacer el render y haci yo creo que pueden llamar funciones externas desde el bucle.

2º: el otro problema que tengo es con las fuentes TT en todos los programas hechos con dxlib las fuentes se ven mal, puros garabatos por ejemplo:

fps:60 --> fppppp

no lo he podido solucionar ademas no creo que sea problema del dx mio.

de antemano gracias por la atencion.

[EX3]

Cita de: "isokyvb"1º: los ejemplos que vienen con la DXlib traen la forma de renderizado
usando el bucle looping y esas cosas, pero me entro la duda cuando no pude llamar funciones externas desde el programa principal hacia los modulos lo cual al llamarlas la pantalla se me queda negra y tengo que finalizar el programa antes de que se me cuelgue, no es problema de codigo puesto que quitando la funcion se acaba el problema y adaptandola dentro del bucle funciona perfecto, lo otro que vi que en algunos ejemplos tambien ocupan el control timer para hacer el render y haci yo creo que pueden llamar funciones externas desde el bucle.
Lo primero es que el metodo de bucle que muestran los ejemplos el metodo que se debe usar y se usa en cualquier programacion orientada a juegos o no. Sobre lo del que no se pueden llamar funciones externas, no entiendo esto que dices. No veo por que no puedes llamar funciones externas desde dentro del bucle. Si la funcion a la que llamas es de alcance publico se deberia poder llamar. Sobre el fallo que comentas de que se te queda la pantalla en negro fijate que no sea otro bucle sin salida o algo similar, por que oviamente, si el bucle principal no corre, la aplicacion tampoco.

Cita de: "isokyvb"2º: el otro problema que tengo es con las fuentes TT en todos los programas hechos con dxlib las fuentes se ven mal, puros garabatos por ejemplo:

fps:60 --> fppppp
Aqui seria mejor que colgaras el codigo que estas usando, por que ese error de que te muestre basura en el texto pude deberse a un fallo ajeno a la dx_lib32, mas que nada por que alguna vez me ocurrio a mi tambien y el fallo se encontraba en mi codigo generalmente y no en la libreria.

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

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

isokyvb

igualmente voy a revisar mi codigo para ver las llamadas a funciones externas te lo digo por que lo he echo de varias maneras y ninguna me funciona pero ahi veo despues.
y sobre las fuentes en los mismos ejemplos de la dxlib tiene esos errores raros.

aqui esta el codigo original ... esta todo para no quitarle credito a nadie  :)

////////////////////////////////////////////////////////////////////////////////////

'////////////////////////////////////////////////////////////////
'/                                                              /
'/ Proyecto dx_lib32 2.0 - Tutoriales de la clase dx_GFX        /
'/ Tutorial 6: Dibujo de texto con fuentes TrueType             /
'/ José Miguel Sánchez Fernández                                /
'/                                                              /
'////////////////////////////////////////////////////////////////

Option Explicit

'Variable objeto que apunta a la clase dx_GFX:
Dim m_gfx As dx_GFX_Class

'Almacena los idenficadores de las fuentes de texto cargadas:
Dim System As Long, Lucida As Long, Impact As Long

'Controla el bucle principal:
Dim Looping As Boolean

'Almacena el ancho y alto de una cadena de texto:
Dim tWidth As Long, tHeight As Long

Private Sub Form_Load()
'Mostramos la ventana:
Me.Show

'Creamos la instancia de la clase dx_GFX:
Set m_gfx = New dx_GFX_Class

'Inicializamos la clase y el modo de video a 640x480 en modo ventana:
Call m_gfx.Init(Me.hWnd, 640, 480, , True)

'Cargamos las fuentes de texto y las configuramos:
System = m_gfx.FONT_LoadSystemFont("System", 10, False, False, False, False)
Lucida = m_gfx.FONT_LoadSystemFont("Lucida Console", 14, True, True, False, False)
Impact = m_gfx.FONT_LoadSystemFont("Impact", 24, False, False, True, False)

'Obtenemos las dimensiones de la cadena de texto "Hello World!" con la fuente Impact:
tWidth = m_gfx.FONT_SystemGetTextWidth(Impact, "Hello World!")
tHeight = m_gfx.FONT_SystemGetTextHeight(Impact, "Hello World!")

Looping = True

Do While Looping
   'Dibujamos varias cadenas de texto cada una con una fuente distinta:
   
   Call m_gfx.DRAW_Text(Impact, "Dibujo de texto con dx_lib32", 0, 30, 0, &HFFFF7700, Align_Center)
   
   Call m_gfx.DRAW_Text(Lucida, "Este programa muestra el uso de las funciones" & vbNewLine & _
                                "de texto para cargar y configurar las fuentes" & vbNewLine & _
                                "de texto de Windows y como dibujar en pantalla" & vbNewLine & _
                                "una cadena de texto.", 30, 128, 0, &HFF77FF00, Align_Left)
                                   
   'Mostramos los cuadros por segundo del programa para poder apreciar la escasa velocidad que se
   'logra con las llamadas a las funciones de texto de la libreria:
   Call m_gfx.DRAW_Text(System, m_gfx.FPS & " cuadros por segundo (FPS)", 0, m_gfx.Screen.Height - 20, 0, &HFF0077FF, Align_Right)
   
   
   'Dibujamos un "Hello World!" con la fuente Impact y lo rodeamos de un cubo mediante los datos
   'obtenidos de las funciones FONT_SystemGetTextWidth() y FONT_SystemGetTextHeight():
   Call m_gfx.DRAW_Text(Impact, "Hello World!", 100, m_gfx.Screen.Height - 100, 0, &HFFFFFFFF, Align_Left)
   Call m_gfx.DRAW_Box(100, m_gfx.Screen.Height - 100, 100 + tWidth, m_gfx.Screen.Height - 100 + tHeight, 0, &HFFFFFFFF)
   
   'Ejecutamos las llamadas de la clase grafica:
   Call m_gfx.Frame

Loop

'Descargamos las fuentes de texto de la memoria:
Call m_gfx.FONT_UnloadSystemFont(System)
Call m_gfx.FONT_UnloadSystemFont(Lucida)
Call m_gfx.FONT_UnloadSystemFont(Impact)

'Terminamos la ejecucion de la clase:
Call m_gfx.Terminate

'Destruimos la instancia de la clase:
Set m_gfx = Nothing

End

End Sub

Private Sub Form_Unload(Cancel As Integer)
Looping = False

End Sub

///////////////////////////////////////////////////////////////////////////////////
en grande: http://img9.picsplace.to/img.php?file=img9/20/problemafuentes.JPG
la foto:


igual la foto esta chica pero se entiende no?.

[EX3]

:shock: No se parece en nada a los errores que tuve al principio, que se debian por una mala conversion numerica a texto en ciertas acciones  Y por lo que veo es el codigo tal cual del tutorial 6 sin modificar, que yo me hacia la idea de que era un codigo tuyo :(

Siento decirte que ni por asomo se me ocurre por donde puede venir el error ya que eres la primera persona que le ocurre esto y que yo tenga constancia de ello. Has probado algun ejemplo directo con DirectX, sin usar dx_lib32, que muestre texto en pantalla? este ejemplo por poner uno: DirectX4VB: - Drawing Text - Custom Rasterizers and normal 2D Text

Pruebalo y dime si te da el mismo error, al menos por descartar si es o no de la dx_lib32.

Aun asi, tengo de camino desde hace un par de meses una nueva revision de la libreria para publicar que podria corregir ciertos errores internos de compilacion, que no del codigo en si, debidos a las opciones de compilacion avanzadas de VB6 para optimizaciones, que a veces provocan errores innesperados de malos accesos de memoria o desestabilizan la ejecucion del programa. Si ciertos problemas, como este que muestras, no se solucionan con esta version ya no me quedan mas cartas para jugar la siguiente baza :?

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

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

isokyvb

ya.. revise el link que me dijiste y salio esto al ejecutar el programa,
la imagen habla por si sola... :?

solo mira abajo...
http://img9.picsplace.to/img9/20/problema2.JPG

[EX3]

Weno, al menos ya descarto que sea problema de mi codigo o de las opciones avanzadas de compilacion de VB 6.0 que tanta guerra me ha estado dando en las ultimas versiones (y una de las razones de por que me decidido saltar a .NET para seguir desarrollando mis historias)

La verdad que solo se me ocurre que trates de reinstalar las DirectX pero aun asi ni se me ocurre la causa de por que se te "corren" los caracteres en las cadenas de texto :?

Prueba a resintalar DirectX y me cuentas.

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

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

isokyvb

Ya voy a ver y de ahi te cuento, ademas te digo altiro que tengo actualizado el directx a la ultima version y que igual el problema creo que viene de antes asi que gracias por la ayuda y atencion pero creo que voy a tener que encontrar mis propias respuestas si es mi pc, ¿no?...
gracias.

[EX3]

Aun asi deja tu duda en el foro general de programacion o de graficos, para que asi este mas la vista del resto de usuarios del foro que no visitan este subforo, que quizas alguno sepa por donde pueden venir los tiros y te pueda dar alguna solucion.

Suerte ;)
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.