Jump to content

DXGL

From www.williamfeely.info
Revision as of 00:23, 18 January 2012 by Admin (talk | contribs) (Roadmap)


Introduction

DXGL is a project to create a DirectDraw/Direct3D version 1 to 7 implementation that runs on OpenGL 2.0. It is intended to alleviate some of the graphics glitches inherent with using legacy DirectX interfaces on modern video cards. The API will be 100% binary compatible with the system ddraw.dll file.

DXGL is currently in a pre-alpha stage and very little works at this point.

System Requirements

  • Windows operating system (currently XP or above)
  • OpenGL 2.0 or higher compatible video card, with hardware accelerated non-power-of-two size textures
  • OpenGL 3.0 or higher compatible video card for 8-bit modes.
  • Visual C++ 2010 x86 runtime, available at http://www.microsoft.com/download/en/details.aspx?id=5555

Build Requirements

  • Visual Studio 2010 or Visual C++ 2010 Express
  • Latest version of Windows SDK may be required

These instructions assume that you do not have any of the required software installed. If you already have any or all of this software installed and set up, skip those steps.

Progress

See DXGL Features for detailed information.

See DXGL Changelog for release information and previous version downloads.

Also see DXGL Test Results.

What works:

  • DirectDraw object creation and destruction (versions 1 to 7)
  • Display mode enumeration and switching (with emulated mode switching)
  • Fullscreen and windowed modes.
  • Basic Blt() functionality
  • 8-bit color on OpenGL 3.0+ graphics cards

What partially works:

  • SetCooperativeLevel (destroys the GL context if switching between windowed and fullscreen modes)

What doesn't work:

  • Most functions are stubbed out and return an error
  • No 3D graphics support

Roadmap

These are goals to be set for future releases.

  • 0.1.4
Eliminate deprecated GL calls

(note: keeping shaders at version 1.10): Template:Big complete

Eliminate GL memory leaks: Template:Big complete
  • 0.2.0
Add new advanced settings: Template:Big complete
Add basic IDirect3D7 interfaces: Template:Big complete
Add vertex/pixel shader engine: Template:Big complete
  • Future
Advanced VSync support: Template:Big complete
Support NULL HWND SetCooperativeLevel(), for Allegro games: Template:Big complete
Add 3D support: Template:Big complete
Add Code::Blocks projects: Template:Big complete
Support GCC/MinGW compilation: Template:Big complete
Create Doxygen documentation: Template:Big complete
Hook GetCursorPos/SetCursorPos/ClipCursor/GetClipCursor/GetCursorInfo: Template:Big complete

Screenshots and videos

The first screenshot is of the test application for DXGL. The second screenshot is of the config program.

The first image is of the direct access/page flipping test in windowed mode, 8-bit color. This is the `reference` shot taken with the system's ddraw.dll. Colors depend on the current system palette. The second image is of the same program rendered in DXGL in fullscreen. The colors are rendered using GLSL, with a luminance texture for the image and a 256x1 BGRA texture for the color palette. The black bars are because the screen was set to 720x480 but DXGL was set to 640x480, using aspect corrected scaling instead of mode switching.

DXGLTest displaying color patterns in windowed mode; Gradient bar test in 32-bit color

Error in widget YouTube: unable to write file /var/www/www.williamfeely.info/w/extensions/Widgets/compiled_templates/wrt6a2cdcc4621c52_23435060
Error in widget YouTube: unable to write file /var/www/www.williamfeely.info/w/extensions/Widgets/compiled_templates/wrt6a2cdcc462f262_60142061
Error in widget YouTube: unable to write file /var/www/www.williamfeely.info/w/extensions/Widgets/compiled_templates/wrt6a2cdcc463cf47_84094660
Error in widget YouTube: unable to write file /var/www/www.williamfeely.info/w/extensions/Widgets/compiled_templates/wrt6a2cdcc4647523_37479897
Error in widget YouTube: unable to write file /var/www/www.williamfeely.info/w/extensions/Widgets/compiled_templates/wrt6a2cdcc4652508_01796471
Error in widget YouTube: unable to write file /var/www/www.williamfeely.info/w/extensions/Widgets/compiled_templates/wrt6a2cdcc465d7b4_95813542

Videos of test runs of dxgltest. The first test currently includes a palette screen and a gradient test. The gradients look ugly in 256 color mode because the routine does not support dithering.

Downloads

These downloads are subject to the GNU Lesser General Public License, version 2.1. To install, simply run the Windows installer. To upgrade, install over the old version. All programs configured by the configuration tool will be automatically updated.

The current available version of DXGL is 0.1.3. Please click one of the links below to download.

Windows installer

Source code

Please see All DXGL Downloads for older versions.

SVN

SVN readonly access is available at:

https://www.williamfeely.info/svn/dxgl

There is a Mediawiki-based SVN log at:

https://www.williamfeely.info/wiki/Special:Code/DXGL

AppDB

An AppDB system (similar to that on winehq.org) is now available at:

https://www.williamfeely.info/appdb/

This requires a user account separate from the other services.

Discussion boards

You may discuss DXGL at:

https://www.williamfeely.info/phpBB3

You must create a forum account to post content.

Bug reports

Bug reports are managed by a Bugzilla system available at:

https://www.williamfeely.info/bugzilla

A user account needs to be created at this site to post bug reports.

Current bugs:

{{#bugzilla:

 |product=DXGL
 |status=UNCONFIRMED,CONFIRMED,IN_PROGRESS
 |noresultsmessage=No bugs currently reported.  Please go to the Bugzilla to report any bugs.

}}