Foros - Stratos

Proyectos => Proyecto dx_lib32 => Mensaje iniciado por: [EX3] en 08 de Abril de 2006, 05:57:18 PM

Título: Dx_lib32 Version 2.1 Liberada
Publicado por: [EX3] en 08 de Abril de 2006, 05:57:18 PM
Ya esta disponible la nueva versión 2.1 de dx_lib32 que corrige los siguientes bugs e incluye las siguientes mejoras:

Versión 2.1.186 (08/04/2006)

Las novedades mas importantes de esta versión son:Por razones de tiempo y necesidad de retomar un proyecto pendiente (el TLSA Engine y el proyecto del juego correra en el) no se ha implementado el sistema de reporte de sucesos ni se hará en un futuro. Por el momento queda pendiente la posible implementación del sistema de fuentes de texto mediante bitmaps, un sencillo sistema de partículas y el soporte de efectos de sonido para la clase dx_Sound.

Ya sabeis, si encontrais algun fallo o algo raro no dudeis en comentarlo ;)

Salu2...

P.D.: Creo que he solucionado el fallo de referencias en los fuentes de los tutoriales. Si por alguna razon aun os fallase la referencia al abrir el proyecto recordar que se solucionaria creando la referencia desde el cuadro de referencias en el menu Proyectos del IDE de Visual Basic. Para mas informacion mirar la documentacion.
Título: Dx_lib32 Version 2.1 Liberada
Publicado por: TheAzazel en 08 de Abril de 2006, 06:55:22 PM
 Te has puesto las pilas eh?? (ole)

quiero saber mas del TLSA y del juego ese...  

Saludos!
Título: Dx_lib32 Version 2.1 Liberada
Publicado por: [EX3] en 09 de Abril de 2006, 08:21:40 AM
 
Cita de: "TheAzazel"Te has puesto las pilas eh?? (ole)
Que va :P Si me hubiera puesto de verdad las pilas ya estarian implementados el sistema de fuentes graficas, del que ya tengo el editor y formato terminado (exlcuyendo un leve fallo del editor), el sistema de particulas (que al final implementare aparte para el TLSA Engine y que subire a la pagina como recurso para el que se interese por el), efectos de bumpmaping para simulacion de fluido "underwater" y efecto lupa entre otras (aun me tengo que poner a traducir los tutos del SDK de C++ a VB :P) y otro efecto de bump para simular iluminacion con relieve (que este si lo tengo ya en VB), todo esto solo para el modulo grafico, despues me faltaria la implementacion de los efectos de sonido mediante DirectSound, para poder dar algo mas de ambientacion en el juego de ser posible.

Lo peor es que me temo que la mitad de estas cosas no las llegare a implementar por que despues de 6 años ya estoy hasta las *****as de desarrollar la dichosa libreria (entre aprendizaje, dos reescrituras completas del proyecto y nuevas implementaciones ya esta uno cansado) y me quiero poner con el juego ya (aunque sea desarrollar una demo como minimo), que como me espere mas VB6 me caduca definitivamente y no podre aprovechar minimamente todo el trabajo empleado sobre la dx_lib32 (hasta marzo 2008 como minimo) Lo importante que ya tengo en teoria todo lo necesario para poder retomar el TLSA Engine definitivamente :)

Cita de: "TheAzazel"quiero saber mas del TLSA y del juego ese...
Pues poco mas puedo decirte que este martes me tengo que reunir con los posibles miembros del grupo que compondremos para desarrollar el juego: diseñador, dos grafistas y el programador (osea yo :P) y aprovechare para exponerles lo mas detalladamente posible la idea y para que aporten opiniones e incluso algun consejo. Por lo demas no tengo nada disponible en condiciones para mostrar, leves esbozos del ultimo intento desarrollando las bases del sistema de escenarios del motor, que ahora tendra que ser reescrito desde 0 para unas leves mejoras y asi facilitarme incluso el trabajo.

Resumidamente el juego seria un plataformas 2D no "scrollado" con una mecanica y diseño semejante al prince of persia y/o another world. Genero ciencia ficcion con un argumento y desarrollo que espero guste. Algo sencillo y sin muchas florituras, para no enrollarme mucho con el tema y acabar en nada o dejarlo innacabado.

En fin, que por el momento solo tengo humo para mostrar y a fin de cuentas eso es lo mismo que nada, asi que de momento toca esperar a tener algo "tangible" que poder enseñar ;)

Salu2...
Título: Dx_lib32 Version 2.1 Liberada
Publicado por: TheAzazel en 09 de Abril de 2006, 03:48:42 PM
 Todo eso que dices de la lib...es que es mucho mucho curro para una sola persona. Yo tambien tengo muchas ganas de terminar los targets principales marcados para poder terminar de una vez un bomberman (le faltan los menus y pulir un poquito el aspecto network...pero esto depende de mejorar la lib en dicho aspecto).

Si yo empezara ahora mismo pero sabiendo lo que ya se... utilizaria una lib ya mascadita para poder dedicarme integramente al juego pero claro, al principio uno no sabe la cantidad de horas que vas a invertir en algo asi. Muchas veces algo que me ayuda a seguir adelante son mails de la gente (pocos españoles la verdad jeje, mas de EEUU, alemanes y franceses) que me agradecen el curro que me estoy pegando y me animan a seguir adelante, otras, son los que veo que lo utilizan y me consultan problemas, descubren algun bug y cosas similares pero vamos, que es un camino duro :).

Bastantes veces me da la impresion que entre nosotros, no valoramos la cantidad de trabajo que lleva esto detras ni lo util que es para otras personas y esas cosas...., quizas, una alegre excepcion sea el motor de haddd que con eso de ser 3D y utilizarse con .net si esta siendo mucho mas valorado :)

bueno tio, a ver si tengo sitio en la conferencia de haddd(estoy en lista de espera) y nos vemos todos por alli, si no puedo ir y por la tarde se hace algo...me apuntaria :)

pues venga, a ponerse con el juego! por cierto, los demas componentes del grupo son tambien de fuenla/madrid??

saludos
Título: Dx_lib32 Version 2.1 Liberada
Publicado por: [EX3] en 10 de Abril de 2006, 03:34:15 AM
 
Cita de: "TheAzazel"Todo eso que dices de la lib...es que es mucho mucho curro para una sola persona.
Yap, pero es lo que hay, la unica persona a la que pediria ayuda para implementar mas cosas y que no me dejaria tirado o a medias de DirectX no maneja ni papa :-/ El tema es que se podrian considerar "pijaditas" lo que me falta por implementar, ya que lo gordo de verdad por suerte ya lo puli hace unos meses y con ello se puede maquinar algo en condiciones, todo es cuestion de buscarse las vueltas a la tuerca y eso es lo que me gusta del tema xD

Cita de: "TheAzazel"Bastantes veces me da la impresion que entre nosotros, no valoramos la cantidad de trabajo que lleva esto detras ni lo util que es para otras personas y esas cosas...
Yo no lo veo asi, yo mas bien pienso que los usuarios finales del producto y la gente que llega a conocer el proyecto de oidas o por comentarios de terceros son los que no llegan a apreciar el autentico trabajo que hay detras. Es mas, como anecdota mia debo mencionar que hace cosa de un mes un evangelizador-extremista de C++ en un foro de VB6 (que carajos pinta un extremista de C++ en un foro de VB me pregunto...) que no paro de sacarle pegas al proyecto, que segun el por estar programado en VB6 y que por apoyarme en librerias y funciones externas (lease DirectX...) que no tenia merito alguno, etc... etc... En verdad, gente asi de cerrada de ideas y poco objetiva a la hora de opinar acerca del trabajo de otros es la que me ha motivado a terminar la libreria xDDDD

Cita de: "TheAzazel"bueno tio, a ver si tengo sitio en la conferencia de haddd(estoy en lista de espera) y nos vemos todos por alli, si no puedo ir y por la tarde se hace algo...me apuntaria :)
Yo encantado, que me quede con las ganas en la kdd de enero. Yo ya he dicho que tengo el viernes totalmente libre, asi que vaya o no vaya a la conferencia de M$ si hay kdd alli estare ;)

Cita de: "TheAzazel"pues venga, a ponerse con el juego! por cierto, los demas componentes del grupo son tambien de fuenla/madrid??
Los dos grafistas son Madrid capital y el diseñador es de Loranca (barrio de Fuenlabrada aunque se podria considerar casi una urbanizacion) Por el juego ya llevo meses unificando las ideas surgidas en estos 6 años y dando forma definitiva al argumento con ayuda del diseñador y uno de los grafistas (en este apartado metemos baza todos). Ahora toca que primeramente termine o tenga algo medianamente usable del motor para empezar con el diseñador a dar forma a las ideas sobre papel y cuando la parte de programacion y diseño este mas o menos finiquitada, al menos lo justo para realizar como minimo una demo del juego, es cuando empezarian su labor los grafistas. De momento este martes me toca exponer definitivamente la idea final y contrastar opiniones entre ambos.

Salu2...
Título: Dx_lib32 Version 2.1 Liberada
Publicado por: Vicente en 10 de Abril de 2006, 08:55:52 AM
Cita de: "TheAzazel"Bastantes veces me da la impresion que entre nosotros, no valoramos la cantidad de trabajo que lleva esto detras ni lo util que es para otras personas y esas cosas...., quizas, una alegre excepcion sea el motor de haddd que con eso de ser 3D y utilizarse con .net si esta siendo mucho mas valorado :)

bueno tio, a ver si tengo sitio en la conferencia de haddd(estoy en lista de espera) y nos vemos todos por alli, si no puedo ir y por la tarde se hace algo...me apuntaria :)
Hola,

yo opino como EX3, creo que dentro de la comunidad si nos damos cuenta del trabajo que tiene desarrollar cosas como Dx_lib21, CRM32PRO o Haddd. Más que nada porque como lo hacemos, cuando vemos la currela de los demás pues te haces a la idea ;) No creo que casi nadie en los foros piense que las librerías/proyectos del resto de la gente de los foros no tiene trabajo.

Un saludo!

Vicente

P.D.: madrid kdd 2nd edition ya! :P
Título: Dx_lib32 Version 2.1 Liberada
Publicado por: TheAzazel en 10 de Abril de 2006, 11:05:43 AM
 Bueno, quizas he tenido malas experiencias personales jejeje

ya lo hablaremos largo y tendido si al final se realiza el second meeting! jajaja
Título: Dx_lib32 Version 2.1 Liberada
Publicado por: en 24 de Abril de 2006, 10:25:40 PM
 
Hola soy nuevo en esto de los videojuegos y com se algo de VB y despues de visitar la web del proyecto decidi bajarme y probar los tutoriales ( creo que hay cuatro apartados , graficos ,sonido , input y general o algo asi...) solo tengo problemas con el de graficos , en concreto con el uno y dos , creo ....usan una función que es DrawMap y otra que es Frame para despues dibujar , el fragmento de codigo exactamente es :

Do While Looping
   'Dibujamos el grafico en las coordenada 340, 240 con su tamaño original:
   Call m_gfx.DRAW_Map(Sprite, 32, 32, 0, 50, 100)
   'Ejecutamos las llamadas de la clase grafica:
   Call m_gfx.Frame
Loop

pero al ejecutar la ventana se queda negra y no hace nada aparentemente . ... tengo que instalar algo mas ( he instalado el ejecutable dx_lib32v21188.exe ) , o hacer alguna otra referencia a otra dll (la hago directamente a dx_lib32.dll ya que da error al cargar el proyecto) o que ???
mi sistema operativo es Windows XP y uso el VB 6.0..
gracias por anticipado y perdon por la ignorancia ...   (nooo)

viva la resistance !!!! :ph34r:  :ph34r:  
Título: Dx_lib32 Version 2.1 Liberada
Publicado por: [EX3] en 25 de Abril de 2006, 12:43:40 AM
 Wenas, HugoBox.

Si no me equivoco (y sobre todo por una errata mia del comentario del codigo xD) supongo que se trata del Tutorial 2 de dx_GFX. Cierto, no? No se si has modificado el codigo añadiendo o quitando algo para hacer pruebas con lo que no sabria exactamente donde podria estar el error, me vendria bien que puesieras todo el codigo de tu programa para saber mas detalles ya que con lo que me has puesto solo podria especular teorias tales como que no has cargado un grafico previamente por ejemplo, vamos, que estaria dando palos de ciego ;)

Salu2...

P.D.: En el futuro abrir nueva discursion para plantear dudas ;)
Título: Dx_lib32 Version 2.1 Liberada
Publicado por: en 25 de Abril de 2006, 03:39:02 AM
 Wenas , ante todo gracias por hacerme caso y por la prontitud en la respuesta .
El codigo no lo he modificado en absoluto , trato de ejecutarlo tal cual esta en el tutorial , el fragmento de código que te envio es parte de eso codigo, mira este es al completo ( el de  form1 )

'////////////////////////////////////////////////////////////////
'/                                                              /
'/ Proyecto dx_lib32 2.0 - Tutoriales de la clase dx_GFX        /
'/ Tutorial 2: Cargar imagen y dibujarla en pantalla            /
'/ José Miguel Sánchez Fernández                                /
'/                                                              /
'////////////////////////////////////////////////////////////////

Option Explicit

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

'Alamcena el valor del grafico en memoria:
Dim Sprite As Long

'Controla el bucle principal:
Dim Looping As Boolean

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 un grafico en memoria:
Sprite = m_gfx.MAP_Load(App.Path & "\Texture.png", 0)

Looping = True

Do While Looping
   'Dibujamos el grafico en las coordenada 340, 240 con su tamaño original:
   Call m_gfx.DRAW_Map(Sprite, 32, 32, 0, 0, 0)
   
   'Ejecutamos las llamadas de la clase grafica:
   Call m_gfx.Frame

Loop

'Descargamos el grafico de la memoria:
Call m_gfx.MAP_Unload(Sprite)

'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



...........,que conste que la refererencia a la dll la hago manualmente , aunque por lo que veo en este foro a otra gente le rula bien ... no se , se te ocurre algo?
gracias por anticipado :blink:  
Título: Dx_lib32 Version 2.1 Liberada
Publicado por: [EX3] en 25 de Abril de 2006, 07:04:08 AM
 Oviando que el codigo es el mismo que el del tutorial error en el codigo no hay por lo menos. La referencia dices que la realizas ya que error de referencia no te da por lo que me has comentado (dices que ves la ventana de color negro por lo tanto dx_GFX esta renderizando). Dices que estas tratando de ejecutar el tutorial tal cual, sin modificar codigo y sin cambiar el archivo de imagen que carga, osea, tal cual venia en la distribucion de la pagina, correcto? No se por donde pueden venir los tiros. Ejecuta el Tutorial 7 y muestrame que te pone. Ese tutorial te devuelve la informacion acerca de tu tarjeta grafica y demas detalles que podrian guiarme parcialmente de donde podria venir el error, que quizas se trate de la propia libreria o de que tu tarjeta sea antigua y no soporte bien algun detalle basico, por ejemplo, algunas tarjetas antiguas no soportan texturas de 32 bits, quizas vengan por ahi los tiros, pero vamos, hasta que no sepa que tarjeta tienes no puedo descartarlo.

Salu2...
Título: Dx_lib32 Version 2.1 Liberada
Publicado por: en 25 de Abril de 2006, 03:02:20 PM
 
Esto es lo que devuelve la pantallita del tutorial 7:
Adaptador de video: NVIDIA RIVA TNT2 Model 64/Model 64 Pro
Controlador: nv4_disp.dll
Version del controlador: 14.5672
Tamaño maximo de una textura en memoria :2048x2048
El dispositivo de video soporta 32 bits de color
memoria de video total :30701 KB(30.98MB)
memoria de video disponible 30.94 MB

Quizas se me queda corta la tarjeta de video ???? tambien tengo un PC un poco viejo , PIII a 933Mhz, vamos que ya me toca comprarme otro , aver si con la paga extra....
Gracias Majete!!! si el servicio tecnico del ADSL de telefonica fuera tan atento como tu otro gayo nos cantaria jejeje (ole)  
Título: Dx_lib32 Version 2.1 Liberada
Publicado por: [EX3] en 26 de Abril de 2006, 01:55:31 AM
 
Cita de: "Guest"Quizas se me queda corta la tarjeta de video ???? tambien tengo un PC un poco viejo , PIII a 933Mhz, vamos que ya me toca comprarme otro , aver si con la paga extra....
Para nada, el equipo da la talla de sobra y sobre todo la tarjeta grafica, que es lo que mas importa en cuestion de graficos. Pues no se por donde pueden venir los fallos, prefiero seguir pensando que es cosa del UPX y no del codigo ya que esto por ejemplo no puede ocasionar fallos tan garrafales como una violacion de memoria:
Public Sub SOUND_SetVolume(Channel As Long, Value As Long)
On Local Error Resume Next

If DS_Init Then
   If Value > 100 Then Value = 100 Else If Value < 0 Then Value = 0

   Call m_Channel(Channel).Buffer.SetVolume((Value * 100) + DSBVOLUME_MIN)
   
End If

End Sub

Si fuese un codigo mas enrevesado todavia podria sospechar pero de algo tan mimio como esto es impensable  (nooo)

No se, la proxima version de momento ya no vendra comprimida con UPX. La dejare un tiempo para ver si le sigue fallando a la gente y en caso de ser asi me tocara reactivar de nuevo los controladores de errores internos del VB a la hora de compilar (100kb mas de peso a la libreria :() y rezar para que con eso desaparezcan los malditos errores. Espero no llegar a tanto ya que esta ultima medida resta algo de potencia a los programas compilados en VB6.

Cita de: "Guest"Gracias Majete!!! si el servicio tecnico del ADSL de telefonica fuera tan atento como tu otro gayo nos cantaria jejeje (ole)
Para 4 gatos que usan mi cutre-libreria que menos que tratar de tenerlos contentos, no? (ole)

Salu2...
Título: Dx_lib32 Version 2.1 Liberada
Publicado por: en 26 de Abril de 2006, 07:43:06 AM
 mil gracias (aunque me he quedao con las ganas ), ojala todo el mundo compartiera sus logros como tu lo haces ! Yo estudio inf. tecnica en la UNED , estoy a punto de acabar y me seria totalmente imposible desarrollar una libreria como la tuya!(mas que nada por que no piloto nada de graficos), de todas las maneras se agradece que exista gente como tu que altruistamente y sin cobrar haga esta cosas , ..... estare atento a esa modificacion que dices ....


VIVA EL SOFTWARE LIBRE !!!!!!!! ;)  
Título: Dx_lib32 Version 2.1 Liberada
Publicado por: pbarros en 27 de Abril de 2006, 05:13:10 PM
Hola a todos...
tengo una pregunta, sobre la propiedad de poder cambiar la resolución de pantalla en tiempo de ejecución... no sé si se podrá también pasar de ventana a pantalla completa.
¿Debo hacer un terminate y luego un init nuevamente?, ¿cómo se debe hacer la rutina?, por ejemplo, para pasar de ventana a pantalla completa con las teclas Alt+Enter.

Se los agradecería mucho...
Título: Dx_lib32 Version 2.1 Liberada
Publicado por: [EX3] en 27 de Abril de 2006, 09:27:11 PM
 Wenas, pBarros.

Lo primero que cualquier duda que vayais a preguntar os agradeceria que lo hicierais en un nuevo tema y no en uno ya abierto, de esa forma me es mas facil localizar nuevas dudas al igual que para otros localizar una posible solucion a un problema similar ;)

Respondiendo a tu consulta, dx_GFX_Class.DEVICE_SetDisplayMode() permite cambiar totalmente el modo de video establecido en dx_GFX, si te fijas uno de los parametros Windowed, al igual que en dx_GFX_Class.Init() indica a dx_GFX si debe ejecutarse en modo ventana o en pantalla completa.

Supongamos que iniciastes tu programa en modo pantalla completa y quieres pasar a modo ventana con la misma resolucion, la llamada seria asi:
'suponiendo que dx_GFX esta instanciada en la variable m_GFX:
Call m_GFX.DEVICE_SetDisplayMode(m_GFX.Screen.Width, m_GFX.Screen.Height, m_GFX.Screen.Bpp,  Not m_GFX.Windowed, m_GFX.TripleBuffer, m_GFX.vSync, m_GFX.Screen.RefreshRate)

Esta llamada establece el mismo modo de video que teniamos establecido obteniendo los datos del objeto/propiedad Screen de dx_GFX (no confundir con la propiedad Screen de Visual Basic 6.0) que almacena las propiedades del modo de video establecido, y altera el valor del parametro Windowed para que se asigne el valor contrario, en este caso al estar el modo de video en modo pantalla completa el valor de dx_GFX.Windowed es Falso, al aplicarle el operador Not lo invierte a Verdadero, de esta forma el parametro Windowed de dx_GFX_Class.DEVICE_SetDisplayMode() seria Verdadero y el modo de video se estableceria en tiempo de ejecucion a modo ventana con los mismos parametros de la resolucion que teniamos. De esta forma evitas tener que hacer lo que decias:
Citar¿Debo hacer un terminate y luego un init nuevamente?
Ya que de esta forma perderias toda la informacion de graficos cargados en memoria al igual que cualquier configuracion establecida en dx_GFX amen aparte de ser un proceso mas costoso que el realizado por dx_GFX_Class.DEVICE_SetDisplayMode().

Sobre como realizar esta llamada al hacer Alt-Enter mira el evento KeyUp del Formulario en Visual Basic 6.0. La forma seria asi mas o menos:
Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
   If KeyCode = vbKeyReturn And Shift = 1 Then
       Call m_GFX.DEVICE_SetDisplayMode(m_GFX.Screen.Width, m_GFX.Screen.Height, m_GFX.Screen.Bpp,  Not m_GFX.Windowed, m_GFX.TripleBuffer, m_GFX.vSync, m_GFX.Screen.RefreshRate)

   End If

End Sub

De todas formas, ahora me encuentro en mitad de una clase y puede que haya cometido algun error en lo expuesto arriba (mi memoria es muy traicionera :P) asi que cuando llegue a casa te confirmo lo expuesto, pero aun asi pruebalo.

Salu2...
Título: Dx_lib32 Version 2.1 Liberada
Publicado por: pbarros en 02 de Mayo de 2006, 07:03:20 PM
 Hola,
probé el código, pero no hubo caso, se me cuelga el PC... voy a seguir intentando, en una de esas es una incompatibilidad de los eventos de teclas de Visual y los de DirectX.

Poco después...
Comprobé lo de las teclas... no es ese el problema, creo q el problema es de la rutina DEVICE_SetDisplayMode, por favor José M. revisa eso si tienes tiempo.

Gracias
Título: Dx_lib32 Version 2.1 Liberada
Publicado por: [EX3] en 03 de Mayo de 2006, 12:40:01 AM
 Sorry que al final se me paso revisar lo que puse  (nooo)

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If Shift = 4 And KeyCode = vbKeyReturn Then
   Call DebugPrint("Cambiando modo de video...")
   
   Call m_GFX.DEVICE_SetDisplayMode(m_GFX.Screen.Width, m_GFX.Screen.Height, m_GFX.Screen.Bpp, Not m_GFX.Windowed, m_GFX.TripleBuffer, m_GFX.VSync, m_GFX.Screen.RefreshRate)
   
End If

End Sub

Este es el codigo que uso en la ventana del TLSA Engine (el motor del juego que pretendo desarrollar). Este codigo actuaria en cuanto hicieras Alt+Enter, cada vez que se ejecuta alternarias entre el modo ventana o pantalla completa.

Salu2...
Título: Dx_lib32 Version 2.1 Liberada
Publicado por: pbarros en 04 de Mayo de 2006, 03:12:36 PM
 Hola José,
no me resulta, lo del Alt+Enter si lo hice (la combinación de teclas), ningún problema, pero la sentencia:

   Call m_GFX.DEVICE_SetDisplayMode(m_GFX.Screen.Width, m_GFX.Screen.Height, m_GFX.Screen.Bpp, Not m_GFX.Windowed, m_GFX.TripleBuffer, m_GFX.VSync, m_GFX.Screen.RefreshRate)


es la que me está colgando Visual... el código es el mismo, sólo que instancio a la clase con otro nombre:


Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
 If Shift = 4 And KeyCode = vbKeyReturn Then
  Call DebugPrint("Cambiando modo de video...")
  Call Grafico.DEVICE_SetDisplayMode(Grafico.Screen.Width, Grafico.Screen.Height, Grafico.Screen.Bpp, Not Grafico.Windowed, Grafico.TripleBuffer, Grafico.VSync, Grafico.Screen.RefreshRate)
 End If
End Sub


uso Visual Basic 6, y tengo la librería... la 2.1.188, no sé que puede ser...  :(  
Título: Dx_lib32 Version 2.1 Liberada
Publicado por: [EX3] en 05 de Mayo de 2006, 08:28:17 PM
 Dices que te da error (una excepcion de windows, error de VB...) o que te cuelga el programa? Si es lo segundo trata de leer el valor devuelto por la funcion DEVICE_SetDisplayMode() (Verdadero o falso) y la funcion Frame() y comprueba que error te devuelve. Tienes la descripccion de cada error en la documentacion. En teoria el unico error por asi decirlo que puede dar es que el Device de Direct3D no logre resetearse aunque a mi solo me ha ocurrido una vez de tropecientas^2 que he probado esta funcion, es mas, en el TLSA Engine que es donde mas testeo ultimamente la dx_lib32 todavia no me ha fallado nunca.

Otra pregunta, segun recuerdo tratabas de pasar de modo ventana a pantalla completa, que resolucion estas usando en modo ventana? (recuerdo que en modo ventana se puede aplicar cualquier resolucion sea o no generica) Si la resolucion no es generica (640x480, 800, 600, etc...) en modo pantalla completa no lo aceptara.

Salu2...
Título: Dx_lib32 Version 2.1 Liberada
Publicado por: pbarros en 05 de Mayo de 2006, 09:38:04 PM
 Sólo se me cuelga el PC, más bien dicho Visual, no lo tengo compilado, sólo le pongo ejecutar y cuando presiono las teclas se cuelga, por lo tanto, no alcanza a arrojar mensaje alguno, debo finalizar la tarea. Estoy usando 800x600 y el bpp por defecto (16 creo).

Option Explicit
Dim Grafico As dx_GFX_Class
Dim Looping As Boolean

Private Sub Form_Load()
Me.Show

Set Grafico = New dx_GFX_Class

Call Grafico.Init(Me.hWnd, 800, 600, , True)

Looping = True

Dim Fondo As Long

Fondo = Grafico.MAP_Load(App.Path & "\space.png", 0)
Do While Looping

   Grafico.DRAW_Map Fondo, 0, 0, 8, Grafico.Screen.Width, Grafico.Screen.Height
   Call Grafico.Frame

Loop
Grafico.MAP_Unload Fondo

Call Grafico.Terminate

Set Grafico = Nothing
End Sub

Private Sub Form_Unload(Cancel As Integer)
 Looping = False
End Sub

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
 If Shift = 4 And KeyCode = vbKeyReturn Then
  Grafico.DEVICE_SetDisplayMode(Grafico.Screen.Width, Grafico.Screen.Height, Grafico.Screen.Bpp, Not Grafico.Windowed, Grafico.TripleBuffer, Grafico.VSync, Grafico.Screen.RefreshRate)
 End If
End Sub


ése es el código... y simplemente se cuelga...
Título: Dx_lib32 Version 2.1 Liberada
Publicado por: [EX3] en 06 de Mayo de 2006, 05:35:10 AM
 Genial, encontre un bug en el nucleo de dx_GFX que he podido solucionar facilmente :) El error venia por que si no habia ninguna fuente de texto cargada en memoria dx_lib32 al tratar de resetear el Device se colgaba (con razon no petaba el TLSA), cuando lo logico en este caso en concreto el codigo deberia dar error de indice fuera de intervalo pero weno, cosas de VB6, ya se sabe :P (tengo desactivados todos los controladores internos de VB6 para ganar velocidad y aligerar peso al ejecutable y ya no me suele avisar de desbordamientos y errores tipicos como este ;))

Para la proxima version queda actualizado y solucionado el error. De momento tendras que cargar una fuente de texto en memoria como minimo si pretendes hacer cambios de modo de pantalla, no hay otra solucion en la 2.1.188 :P Este codigo deberia funcionarte:
Option Explicit
Dim Grafico As dx_GFX_Class
Dim Looping As Boolean

Private Sub Form_Load()
Me.Show

Set Grafico = New dx_GFX_Class

Call Grafico.Init(Me.hWnd, 800, 600, , True)

Looping = True

Dim Fondo As Long

Fondo = Grafico.MAP_Load(App.Path & "\space.png", 0)

' Cargamos una fuente en falso para evitar el error al resetear:
Call Grafico.FONT_LoadSystemFont("arial", 10, False, False, False, False)

Do While Looping

  Grafico.DRAW_Map Fondo, 0, 0, 8, Grafico.Screen.Width, Grafico.Screen.Height
  Call Grafico.Frame

Loop
Grafico.MAP_Unload Fondo

Call Grafico.Terminate

Set Grafico = Nothing
End Sub

Private Sub Form_Unload(Cancel As Integer)
Looping = False
End Sub

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If Shift = 4 And KeyCode = vbKeyReturn Then
 Grafico.DEVICE_SetDisplayMode(Grafico.Screen.Width, Grafico.Screen.Height, Grafico.Screen.Bpp, Not Grafico.Windowed, Grafico.TripleBuffer, Grafico.VSync, Grafico.Screen.RefreshRate)
End If
End Sub


Salu2...
Título: Dx_lib32 Version 2.1 Liberada
Publicado por: en 06 de Mayo de 2006, 08:17:13 AM
 Hola, llevo mucho tiempo buscando a alguien que me resuelva un problema y creo que aquí puedo encontrar a esa persona.

Estoy programando en VB6 y tengo una imagen en un Picture. Necesito pasar esa imagen a ARGB y ponerla en un array unidemensional. Si la imagen es de 100x200  el array será Dim array(100x200) as Long.

Cómo se hace esto?


Muchisimas gracias por adelantado


Roberto.
Título: Dx_lib32 Version 2.1 Liberada
Publicado por: Lex en 06 de Mayo de 2006, 12:47:06 PM
 Que buena es la ayuda del MSDN para estos casos... Yo te ayudaría, sino fuera porque me da pereza abrir el MSDN, buscar que podría utilizar para hacerlo, hacerlo, probarlo y ponerlo aquí... Pero vamos lo único que te puedo decir así de primeras, es que alguna forma tiene que haber de poder leer los pixels uno por uno del picture box... Y ojo, aunque no creo que pudiera resultar muy problemático, pero el tipo de dato Long es de 32bits con signo, y una imagen ARGB es de 32bits sin signo... lo cual es algo a tener en cuenta cuando se realizan las operaciones... aunque quizás haya alguna función en VB6 que te haga eso sin problemas...
Título: Dx_lib32 Version 2.1 Liberada
Publicado por: en 07 de Mayo de 2006, 12:59:25 AM
Cita de: "Lex"Que buena es la ayuda del MSDN para estos casos... Yo te ayudaría, sino fuera porque me da pereza abrir el MSDN, buscar que podría utilizar para hacerlo, hacerlo, probarlo y ponerlo aquí... Pero vamos lo único que te puedo decir así de primeras, es que alguna forma tiene que haber de poder leer los pixels uno por uno del picture box... Y ojo, aunque no creo que pudiera resultar muy problemático, pero el tipo de dato Long es de 32bits con signo, y una imagen ARGB es de 32bits sin signo... lo cual es algo a tener en cuenta cuando se realizan las operaciones... aunque quizás haya alguna función en VB6 que te haga eso sin problemas...
Gracias por tu consejo, como dije llevo tiempo mirando y no encuentro nada en MSND. Gracias de todas formas.


Roberto.
Título: Dx_lib32 Version 2.1 Liberada
Publicado por: [EX3] en 07 de Mayo de 2006, 05:50:55 AM
 No se si va referido tu cuestion con dx_lib32 o no (el tema del ARGB me despista un poco con la poca informacion que das) pero si es el caso no precisas de un PictureBox para cargar una imagen en formato ARGB, dx_lib32 trabaja internamente todas las imangenes en formato ARGB (D3DFMT_A8R8G8B8 de Direct3D) y con MAP_Load()  puedes cargar una imagen en memoria, con SURF_Load() si quieres luego leer los pixeles de la imagen, te bastan para trabajar con la imagen en memoria. Si tu idea era trabajar con el formato ARGB en VB6 a "pelo" olvidate por que VB6 solo trabaja con formato RGB de toda la vida, vamos, que no trabaja con canal alfa en colores (16/24 bits solo).

Si tu intencion simplemente es leer los pixeles de la imagen (en formato ARGB no se para que por el canal alfa de un color en una imagen siempre sera valor absoluto 255 y en este caso te daria igual tratar con valores RGB a secas) puedes cargar la imagen mediante SURF_Load() y extraer la informacion de los pixeles mediante SURF_GetPixelData() y leer los valores de cada pixel de la imagen mediante SURF_GetPixel() y escribiendo valores mediante SURF_SetPixel(). Rrecuerda una vez que hayas escrito todos los pixeles que quieras que para que se graben en la imagen en memoria tienes que llamar al final a SURF_SetPixelData() para guardar los cambios.

Si solo quieres leer el color de un pixel de una imagen, formato RGB de toda la vida, mira en la seccion del foro Codigo de la Semana que subi un codigo para cargar y leer los pixeles de imagenes en memoria mediante el API de Windows sin usar DirectX.

Para cualquier otra consulta que no tenga nada que ver con dx_lib32 agradeceria que lo hicierais en el foro general de programacion que igualmente os la contestare. De momento cierro ya este hilo por que se esta derivando en varias cuestiones que se alejan sobre consultas de informacion o dudas acerca de la ultima version descrita en este hilo sobre dx_lib32. Cualquier consulta sobre dx_lib32 abrir un tema nuevo en este subforo ;)

Salu2...