Novedades de esta versión

# Novedades de esta versión

Versión 2.2.0 (08/08/2008)

Las novedades mas importantes de esta versión son:

> - Versión compatible con Windows Vista
> - Ligeras optimizaciones de código en la clase grafica.
> - Rotación de sprites variando su eje de rotación (gracias a la colaboración de Lessman/Gorkin, referente a explicaciones básicas sobre matrices de transformación, y Amatar por sugerir su uso)
>   DEVICE_SetDrawCenter()
> - Añadido 4 nuevos efectos en la enumeración Blit_Alpha para operaciones de transparencias en DRAW_MapEx() y DRAW_AdvMap() (gracias a Pogacha por su colaboración en el efecto de inversión de color y de escala de grises):
>   Blendop_Inverse
>   Blendop_XOR
>   Blendop_Crystaline
>   Blendop_GreyScale
> - Añadido parámetro opcional GrayScale a las funciones MAP_Load(), MAP_LoadFromMemory(), SURF_Load(), SURF_LoadFromMemory() y SURF_ScreenCapture() de la clase dx_GFX que permite cargar gráficos y superficies en escala de grises a partir de una imagen en color.
> - Añadido función para modificar el valor del gamma:
>   DEVICE_SetGamma()
>   Gamma (Get)
> - Añadido método para aplicar colores independientes a cada vértice en las operaciones de dibujo de sprites con DRAW_Map(), DRAW_MapEx() y DRAW_AdvMap() en vez de un color global que junto a DEVICE_SetSpecularChannel() permiten operar un rango total de iluminación de 512 unidades (64 bits de color), desde el negro absoluto hasta el color base (color de vértice) y desde el color base hasta el blanco absoluto (canal specular):
>   DEVICE_SetVertexColor()
> - Añadida función para importar fuentes de texto desde archivo: (gracias al articulo de Karl E. Peterson "Preview Uninstalled Fonts" - http://vb.mvps.org/articles/ap200107.asp)
>   FONT_LoadSystemFontFromFile()
> - Añadido parámetro Clear a la función Frame() de la clase dx_GFX para desactivar la limpieza de pantalla antes de borrar.
> - Añadida función para dibujar bloques o listas de píxeles en una sola llamada: DRAW_Pixels().
> - Añadida funciones para precalcular la posición de los vértices de un sprite antes de ser dibujado, por ejemplo para realizar cálculos precisos de colisión o para calcular valores de iluminación por vértice:
>   PRECAL_WriteSpriteTransformVertex()
>   PRECAL_ReadSpriteTransformVertex()
> - Añadida función a dx_Input para obtener el código ASCII de la tecla pulsada:
>   Key_ASCII()
> - Añadido soporte de efectos (FX) básicos para muestras de sonido en la clase dx_Sound.
> - Añadido método en dx_Video para obtener las dimensiones originales de un video:
>   VIDEO_GetSize()
> - Añadidos tutoriales de la clase dx_Video.
> - Añadidos tutoriales de colisión en dx_System.
> - Añadida función a dx_System para rotar puntos:
>   MATH_RotatePoint()
> Correcciones realizadas:
> - Desactivado parámetro RefreshRate en las funciones de inicialización y configuración de modos de video que podría estar provocando que la clase grafica no iniciase correctamente en algunos equipos.
> - Corregido error en dx_GFX en la recuperación de hardware en modos a pantalla completa. El motor de render vuelve a recuperar el control del hardware de video al perder el foco inclusive al realizar cambios del modo de video mediante DEVICE_SetDisplayMode()
> - Corregido error en las funciones DEVICE_GetTotalVideoMem() y DEVICE_GetFreeVideoMem() de dx_GFX que originaban una excepción al ser llamadas.
> - Corregido error en MAP_LoadFromFileInMemory() en la carga de archivos. Ahora soporta todos los formatos de imagen de su hermana MAP_Load().
> - Corregido error en MAP_CopyRectsToSurf() y SURF_CopyRectsToMap() en la entrada de los valores de la estructura GFX_Rect.
> - Corregido error al dibujar regiones de una textura definidas con MAP_SetRegion() cuando los parámetros Width y Height de DRAW_MapEx() eran diferentes a 0.
> - Corregido error en dx_Sound en la asignación de canales libres para los efectos de sonido. Ahora se aprovechan todos los canales disponibles.
> - Corregido error en dx_Sound en la asignación de canales libres para cuando un sonido esta en bucle continuo este ya no es suplantado por el nuevo canal.
> - Corregido error en el control de sonido de secuencias de música en dx_Sound.
> - Corregido error en la función FILE_List() de dx_System.
> - Corregido error en las funciones MAP_AdvCopyRects(), MAP_AdvCopyRectsToSurf(), MAP_CopyRects(), MAP_CopyRectsToSurf(), SURF_AdvCopyRects(), SURF_AdvCopyRectsToMap(), SURF_CopyRects(), y SURF_CopyRectsToMap()
> - Corregido los errores en las funciones de lectura y escritura de pixeles en superificies. Se añaden a la lista dos funciones para el trabajo de píxeles de forma mas directa: SURF_ReadPixelArray() y SURF_WritePixelArray().
> - Corregido error en las funciones *_Hit() de la clase dx_Input que no permitía realizar mas de una comprobación de evento por ciclo. Ahora permite llamadas múltiples en un mismo ciclo permitiendo leer el estado de varias entradas.
> - Corregido error en las funciones de lectura de posición de audio y video. Ahora devuelven el valor en milisegundos, como indica la documentación, y no en segundos como lo estaba haciendo actualmente.
> Bugs localizados:
> - Ligeros "artefactos" (conjunto de formaciones de píxeles erróneos) en los resultados de las funciones de Render Targets de dx_GFX, generalmente por la escala de la textura destino respecto a los parámetros de la operación a dibujar.
> - Desincronización de lectura de posición en la función MUSIC_GetCurrentPosition() de dx_Sound al reproducir secuencias de música con la frecuencia de velocidad alterada.
> - Si se intenta asignar la misma secuencia de música en los dos búferes de reproducción simultáneamente solo se escuchara uno de los búferes.
> - La función SYS_Beep() de dx_System puede no funcionar en algunos equipos actuales así como en equipos portátiles.
> - En Visual Basic .NET inexplicablemente falla la lectura de valores de los estados de la estructura Joystick en dx_Input.

#
Historial de novedades

Versión 2.1.190 (13/09/2006)

- Recopilación de dx_lib32 con las opciones de optimización avanzadas desactivadas (Sin alias para variables, quitar comprobaciones de limites en enteros, etc...) como posible solución a ciertos errores internos de la librería que están fuera del alcance del código desarrollado en Visual Basic 6.0 para ser tratados o corregidos. La librería ahora pesara cerca de 312kb de 268kb de la versión anterior (44kb de más).
- Añadido un nuevo parámetro a las funciones MAP_Load y MAP_LoadFromMemory de la clase dx_GFX que permite elegir si suavizar o no los píxeles del grafico a la hora de cargarlo en memoria. Esta opción puede ser útil en ciertos desarrollos como versiones de juegos antiguos, o 'remakes', donde se busca presentar gráficos sin suavizado de píxeles, o 'pixelados'.
- Habilitado el parámetro MaxFrames en la función Frame de dx_GFX que permite limitar el numero de cuadros por segundo (FPS) que alcanzara el programa.
- Añadido soporte de cronómetros de alta precisión a la clase dx_System (buscar por el prefijo HITIMER)
- Añadida función para ordenar arrays de tipo Currency a la clase dx_System.
- Corregido, gracias a un aporte de Luciano (Luciano Esteban Lodola), el error en la función DLG_SaveFile que no añadía la extensión al nombre de archivo que generaba.
- Añadido soporte para guardar en disco las entradas de la consola de depuración de la clase dx_System. Mediante la propiedad DebugFile se indica el nombre con el que se generara el archivo de texto con el contenido de las entradas de la consola de depuración.
- Revisado y corregidos algunos errores en la documentación de dx_lib32.

Versión 2.1.189 (01/06/2006)

- Recompilación de dx_lib32 sin compresión mediante la utilidad UPX que podría ser la causa de algunos fallos de la clase dx_Sound en ciertos procesadores. La DLL pesara aproximadamente 100 Kb más (268 kb aprox. de 117 Kb de antes)
- Solucionado error al tratar de cambiar el modo de video con DEVICE_SetDisplayMode que dejaba el programa congelado si no existían fuentes de texto cargadas en memoria con FONT_LoadSystemFont.
- Corregido error en la función MATH_IntersectRect de dx_System que fallaba la comprobación de intersección entre las dos cajas devolviendo siempre Verdadero como resultado aun en casos donde no existía intersección.
- Mejorada la función MATH_Rand de dx_System.
- Añadida función MATH_PointInLine de dx_System a gracias a la colaboración de Lessman (Gorka Suárez)

Versión 2.1.188 (11/04/2006)

- Solucionado un leve error de cooperación entre las clases dx_Sound y dx_Video con la clase dx_Input que no permitía leer los valores de posición del cursor del ratón del objeto Mouse.

#

Versión 2.1.187 (10/04/2006)

- Solucionado un error de devolución en la función Frame de dx_GFX que devolvía siempre el error GFX_UNKNOWNERROR cuando no se producía error alguno.
- Solucionado un error en las funciones DEVICE_ExistsDisplayMode, DEVICE_GetDisplayMode, DEVICE_GetDisplayModeCount y DEVICE_GetInfo de dx_GFX que no devolvían la información después de inicializar la clase mediante Init.

Versión 2.1.186 (08/04/2006)

- Solucionado pequeño error en la función de Init de la clase dx_Sound que establecía por defecto el parámetro Driver a 1 en vez de a 0 que seria el controlador de sonido por defecto en caso de no existir ninguno adicional. Este error provocaba comportamientos incorrectos e inesperados con las funciones de la clase. Dicho argumento desaparece de la función Init.
- Suprimidas dos funciones de la clase dx_Sound: DEVICE_GetNumDrivers y DEVICE_GetDriverName.
- Solucionado error en dx_Video que no permitía descargar de memoria el video en reproducción.
- Implementado soporte de Render Targets en dx_GFX. Ahora se pueden grabar el resultado de las llamadas de operaciones de dibujo en una textura que después se podrá usar para dibujar sobre la escena principal en el back buffer o sobre otros Render Targets.
- Implementado soporte de iluminación dinámica por vértices en dx_GFX mediante configuración del Canal Specular. Ahora es posible definir distintos niveles de iluminación de forma independiente en cada vértice de un grafico o de una figura compuesta por primitivas.
- Añadido parámetro para definir los hertzios del refresco del monitor en las funciones Init, DEVICE_ExistsDisplayMode y DEVICE_SetDisplayMode de dx_GFX.
- Añadida coordenada Z en la estructura Mouse_Data para leer el valor de la rueda del ratón.
- Añadidas las funciones FONT_SystemGetTextWidth y FONT_SystemGetTextHeight en la clase dx_GFX para obtener el ancho y alto de una cadena de texto.

Versión 2.0.976 (24/02/2006)

- Primera compilación liberada de la versión 2.0 de dx_lib32.
- Unificación de las 5 clases en una sola DLL ActiveX.
- Reprogramación completa a nivel global de la librería, respecto a las versiones 1.x, dando como resultado un componente mas completo, optimizado y seguro.
- Corregidos todos los fallos conocidos a nivel global de versiones anteriores.
- Añadidas nuevas características y funciones a las clases dx_GFX, dx_Input y dx_System.
- Implementación de un buffer de profundidad (ZBuffer) para la clase grafica dx_GFX. Se añade una nueva coordenada las operaciones de dibujo, la coordenada Z, que define el orden en que aparecerá dibujado un grafico o una operación de primitivas en pantalla.
- Mejora de optimización de las operaciones de lectura y escritura de píxeles en una superficie.
- Recuperación del control del dispositivo grafico en modo pantalla completa cuando la ventana pierde el foco.
- Posibilidad de cambiar el modo de video en tiempo de ejecución.
- Implementación de una función para dibujar gráficos aplicándoles una deformación de vista en perspectivas isométrica y caballera.
- Reprogramación completa de la clase de sonido. dx_Sound ahora esta implementada con DirectSound y DirectShow. Ya no se requieren royalties para licencias comerciales por el uso de esta clase ya que no utiliza componentes con licencia comercial como ocurría con la versión anterior que estaba implementada con FMod.
- Añadido soporte para leer la entrada de múltiples dispositivos de juegos (Joysticks y Gamepads) de forma simultanea.