Is it possible to edit the OpenGL wiki, and if so, how? [part 2]

This was supposed to be posted in my previous topic “Is it possible to edit the OpenGL wiki, and if so, how?” here, but alas, the forum has unexpectedly decided that 6 months from the last message ended today, not tomorrow, so I missed it by a day. I kindly ask the moderators to merge this topic with that one. Thanks in advance.


Well, it looks like I’ve finally figured out what was sparked the rumors about Direct3D allegedly being used by OpenGL in Windows XP. This may probably sound like a kind of joke, but it turned out that Windows had another, third implementation of OpenGL. And it was placed somewhere that one could hardly think for - as a shim from the set of application compatibility fixes that Windows provides by default.

https://www.vogons.org/viewtopic.php?t=64489&p=724831#p724831

  • GL_VENDOR: Microsoft Corp.
  • GL_RENDERER: Direct3D
  • GL_VERSION: 1.1

It is named EmulateOpenGL, but for some reason it doesn’t show up in the Microsoft Application Compatibility Toolkit when starting it normally. However, if you run it with the /X command line argument (I don’t know what it means, “external”?), it will be there.

The patch itself is located in the C:\Windows\AppPatch\AcXtrnal.dll file, which exports the same bunch of functions the original opengl32.dll does. At the same time, my quick experiments revealed that there’s no feature parity between them - some functions are stubs or clearly incomplete. So I guess we can call it “built-in MiniGL”, although this seems like a rather weird technical decision.

Here are some other technical details I was able to find out:

  1. The shim loads its settings from the HKEY_LOCAL_MACHINE:\Software\Microsoft\Quake (sic!) registry hive, although the specific options are yet to be recognized.

  2. It is based on Direct3D 8 (AcXtrnal.dll depends on d3d8.dll), which was a part of Windows XP.

  3. It is engaged only if there’s no hardware-accelerated pixel formats available. In this regard, it can be considered as a direct predecessor of ogldrv.dll in its purpose, although they are completely unrelated and AcXtrnal.dll was still present in Windows Vista/7.

  4. Since it essentially replaces opengl32.dll for certain applications, they can no longer fall back to the standard “GDI Generic” software renderer. A workaround is to confuse the pattern matching in AppCompat to prevent it from triggering the shim - for example, by simply renaming the program’s EXE file.

Windows XP and 7 both give the same list of 32-bit game applications where this shim is employed:

  • id Tech 3 - Quake III, Heavy Metal: F.A.K.K.², Star Trek: Voyager Elite Force, American McGee’s Alice
  • id Tech 2 - Quake II, Heretic II, Kingpin: Life of Crime, Soldier of Fortune, John Romero’s Daikatana
  • Omen Engine - MDK2

I wonder if this was a deliberate, quiet sabotage by Microsoft against the most ardent proponent of OpenGL in opposition to Direct3D back then - John Carmack, creator of the id Tech engines. In particular, see Chapter 8 of the linked article - apparently, it describes this very wrapper and Carmack’s reaction to it. One of the “founding fathers” of DirectX, Alex St.John, also mentioned it in his old blog: one, two - Ctrl+F for “ran faster”.

In conclusion, here is another Khronos Wiki page that repeats the same misleading information:
https://www.khronos.org/opengl/wiki/Platform_specifics:_Windows#The_Default_Renderer
This is the edit that introduced it:
https://www.khronos.org/opengl/wiki_opengl/index.php?title=Platform_specifics:_Windows&diff=4630&oldid=4594

The whole “Direct3D vs OpenGL” dispute is dead and any speculation as to motives by people who have long since moved-on is probably best served by being taken out back and having a bullet put in it’s brain. I’m not sure it’s even of value to record it as a historical curiosity anymore, and maybe letting it be in the remaining corners of the web where it still exists is the best thing for it.

Perhaps, but I still see newbies asking questions on the internet from time to time about how exactly OpenGL (and now Vulkan) differs from DirectX (also Metal). And in search of answers to their questions, they naturally come across the holy wars of the past, as well as downright misleading information from the Khronos Wiki. So I thought it was important to at least get the truth out there somewhere so that it could be discovered. Maybe it will save someone time.