It's a shame there isn't a way to use VirtualMachine software to emulate legacy 3D hardware and well actually make it work with the legacy drivers and 3D Vision or something of an emulator like DosBox but for 3D Vision ... 3DOsBox. :)
It's a shame there isn't a way to use VirtualMachine software to emulate legacy 3D hardware and well actually make it work with the legacy drivers and 3D Vision or something of an emulator like DosBox but for 3D Vision ... 3DOsBox. :)
Just guessing here, but it seems like that might be backwards. The logs suggest to me that the game is actually wanting to use some ancient ARB based calls, and that the most recent version of OpenGL32.dll no longer supports those calls.
That's why I was thinking that maybe an older version of OpenGL32.dll might allow this to work.
I'm not sure that OpenGL32.dll is actually GLDirect though. I have an OpenGL32.dll file on my system, and I haven't installed anything special. Moreover that file is copyright Microsoft, and is apparently part of Windows.
I looked at the headers of OpenGL32.dll with Dependency Walker, and there are no ARB style calls in there. If that's a Windows file, then that would suggest that an older OpenGL32.dll from prior Windows might be the trick. Does the game run on XP for example?
Just guessing here, but it seems like that might be backwards. The logs suggest to me that the game is actually wanting to use some ancient ARB based calls, and that the most recent version of OpenGL32.dll no longer supports those calls.
That's why I was thinking that maybe an older version of OpenGL32.dll might allow this to work.
I'm not sure that OpenGL32.dll is actually GLDirect though. I have an OpenGL32.dll file on my system, and I haven't installed anything special. Moreover that file is copyright Microsoft, and is apparently part of Windows.
I looked at the headers of OpenGL32.dll with Dependency Walker, and there are no ARB style calls in there. If that's a Windows file, then that would suggest that an older OpenGL32.dll from prior Windows might be the trick. Does the game run on XP for example?
Acer H5360 (1280x720@120Hz) - ASUS VG248QE with GSync mod - 3D Vision 1&2 - Driver 372.54
GTX 970 - i5-4670K@4.2GHz - 12GB RAM - Win7x64+evilKB2670838 - 4 Disk X25 RAID
SAGER NP9870-S - GTX 980 - i7-6700K - Win10 Pro 1607 Latest 3Dmigoto Release Bo3b's School for ShaderHackers
To use GLDirect, you get opengl32.dll from the bin/release folder and take it out of the folder and place it in the same folder as the game's exe. It generated that first log file that I posted after attempting to run in stereo and crashing, it wasn't the game.
The second log file I posted was generated by the game after successfully launching in 2D without the GLDirect opengl32.dll in the game folder. I obtained it by pulling it from the console command window.
I do know that others have used GLDirect with windows 7 64 bit on other games without trouble, so I'd assume my OS isn't the problem. But I've no idea, it's all Latin to me, unfortunately.
If I can ever find a copy of Windows XP on Craigslist, I'll be able to finish building a legacy rig to play Prey, swkotor and Riddick.
To use GLDirect, you get opengl32.dll from the bin/release folder and take it out of the folder and place it in the same folder as the game's exe. It generated that first log file that I posted after attempting to run in stereo and crashing, it wasn't the game.
The second log file I posted was generated by the game after successfully launching in 2D without the GLDirect opengl32.dll in the game folder. I obtained it by pulling it from the console command window.
I do know that others have used GLDirect with windows 7 64 bit on other games without trouble, so I'd assume my OS isn't the problem. But I've no idea, it's all Latin to me, unfortunately.
If I can ever find a copy of Windows XP on Craigslist, I'll be able to finish building a legacy rig to play Prey, swkotor and Riddick.
OK, I see, the OpenGl32.dll from GLDirect is a wrapper/proxy dll, and it loads before the system one in order to make DirectX calls. The game doesn't know it's not talking to the system one, just like we do for HelixMod and 3Dmigoto.
So that first log is coming from the game itself, right? Not from GLDirect's version of OpenGL.
If that is correct, then the problem there is that the game is looking for old, old, calls like wglGetExtensionsStringARB. All the ARB stuff. And, that ARB stuff does not exist in the version of GLDirect that you are using, hence the failures being logged.
If that is all correct, then you should try to find an older GLDirect that supports those ARB calls, if one exists. I can tell you for sure that the latest version off SourceForge does not support those old calls, and there is no history there so I can't tell if it supported them in the past and were removed, or whether it never supported ARB calls.
OK, I see, the OpenGl32.dll from GLDirect is a wrapper/proxy dll, and it loads before the system one in order to make DirectX calls. The game doesn't know it's not talking to the system one, just like we do for HelixMod and 3Dmigoto.
So that first log is coming from the game itself, right? Not from GLDirect's version of OpenGL.
If that is correct, then the problem there is that the game is looking for old, old, calls like wglGetExtensionsStringARB. All the ARB stuff. And, that ARB stuff does not exist in the version of GLDirect that you are using, hence the failures being logged.
If that is all correct, then you should try to find an older GLDirect that supports those ARB calls, if one exists. I can tell you for sure that the latest version off SourceForge does not support those old calls, and there is no history there so I can't tell if it supported them in the past and were removed, or whether it never supported ARB calls.
Acer H5360 (1280x720@120Hz) - ASUS VG248QE with GSync mod - 3D Vision 1&2 - Driver 372.54
GTX 970 - i5-4670K@4.2GHz - 12GB RAM - Win7x64+evilKB2670838 - 4 Disk X25 RAID
SAGER NP9870-S - GTX 980 - i7-6700K - Win10 Pro 1607 Latest 3Dmigoto Release Bo3b's School for ShaderHackers
I copied the opengl32.dll from the System32 folder of my WinXP machine and dropped it in with Prey, it just crashes on startup(screen goes black and then crashes to desktop). I also tried maually overriding the renderer(r_renderer) to all of the different renders and they all crashed.
Then I dropped it with Alice and it ran fine but I don't think it was actually using it because I was able to delete the dll while the game was running, pretty sure it should've been locked. Either way here's the output from Prey crashing with the WinXP OpenGL dll basically the same thing as D-Man11's.
[quote]----- R_InitOpenGL -----
Initializing OpenGL subsystem
...registered window class
...registered fake window class
...initializing QGL
...calling LoadLibrary( 'opengl32' ): succeeded
Couldn't find proc address for: wglGetExtensionsStringARB
Couldn't find proc address for: wglSwapIntervalEXT
Couldn't find proc address for: wglGetPixelFormatAttribivARB
Couldn't find proc address for: wglGetPixelFormatAttribfvARB
Couldn't find proc address for: wglChoosePixelFormatARB
Couldn't find proc address for: wglCreatePbufferARB
Couldn't find proc address for: wglGetPbufferDCARB
Couldn't find proc address for: wglReleasePbufferDCARB
Couldn't find proc address for: wglDestroyPbufferARB
Couldn't find proc address for: wglQueryPbufferARB
Couldn't find proc address for: wglBindTexImageARB
Couldn't find proc address for: wglReleaseTexImageARB
Couldn't find proc address for: wglSetPbufferAttribARB
...calling CDS: ok
...created window @ 0,0 (1280x1024)
Initializing OpenGL driver
...getting DC: succeeded
...PIXELFORMAT 7 selected
...creating GL context: succeeded
...making context current: succeeded
Couldn't find proc address for: wglGetExtensionsStringARB
Couldn't find proc address for: wglSwapIntervalEXT
Couldn't find proc address for: wglGetPixelFormatAttribivARB
Couldn't find proc address for: wglGetPixelFormatAttribfvARB
Couldn't find proc address for: wglChoosePixelFormatARB
Couldn't find proc address for: wglCreatePbufferARB
Couldn't find proc address for: wglGetPbufferDCARB
Couldn't find proc address for: wglReleasePbufferDCARB
Couldn't find proc address for: wglDestroyPbufferARB
Couldn't find proc address for: wglQueryPbufferARB
Couldn't find proc address for: wglBindTexImageARB
Couldn't find proc address for: wglReleaseTexImageARB
Couldn't find proc address for: wglSetPbufferAttribARB
------- Input Initialization -------
Initializing DirectInput...
mouse: DirectInput initialized.
keyboard: DirectInput initialized.
------------------------------------
...initializing OpenAL
...calling LoadLibrary( 'openal32.dll' ): succeeded
...checking for ALC_ENUMERATION_EXT: succeeded
...shutting down OpenAL
...unloading OpenAL DLL
...initializing OpenAL
...calling LoadLibrary( 'openal32.dll' ): succeeded
...creating AL device: succeeded
...creating AL context: succeeded
...making context current: succeeded
...shutting down OpenAL
...unloading OpenAL DLL
sound: STEREO
X..GL_ARB_multitexture not found
X..GL_ARB_texture_env_combine not found
X..GL_ARB_texture_cube_map not found
X..GL_ARB_texture_env_dot3 not found
X..GL_ARB_texture_env_add not found
X..GL_ARB_texture_non_power_of_two not found
X..GL_ARB_texture_compression not found
X..GL_EXT_texture_filter_anisotropic not found
X..GL_EXT_texture_lod not found
X..GL_1.4_texture_lod_bias not found
X..GL_EXT_shared_texture_palette not found
X..GL_EXT_texture3D not found
X..GL_EXT_stencil_wrap not found
X..GL_NV_register_combiners not found
X..GL_EXT_stencil_two_side not found
X..GL_ATI_separate_stencil not found
X..GL_ATI_fragment_shader not found
X..GL_ATI_text_fragment_shader not found
X..GL_ARB_vertex_buffer_object not found
X..GL_ARB_vertex_program not found
X..GL_ARB_fragment_program not found
********************
ERROR: The current video card / driver combination does not support the necessary features.
********************
The current video card / driver combination does not support the necessary features.
Shutting down OpenGL subsystem
...wglMakeCurrent( NULL, NULL ): success
...deleting GL context: success
...releasing DC: success
...destroying window
...resetting display
...shutting down QGL
...unloading OpenGL DLL[/quote]
I copied the opengl32.dll from the System32 folder of my WinXP machine and dropped it in with Prey, it just crashes on startup(screen goes black and then crashes to desktop). I also tried maually overriding the renderer(r_renderer) to all of the different renders and they all crashed.
Then I dropped it with Alice and it ran fine but I don't think it was actually using it because I was able to delete the dll while the game was running, pretty sure it should've been locked. Either way here's the output from Prey crashing with the WinXP OpenGL dll basically the same thing as D-Man11's.
------- Input Initialization -------
Initializing DirectInput...
mouse: DirectInput initialized.
keyboard: DirectInput initialized.
------------------------------------
...initializing OpenAL
...calling LoadLibrary( 'openal32.dll' ): succeeded
...checking for ALC_ENUMERATION_EXT: succeeded
...shutting down OpenAL
...unloading OpenAL DLL
...initializing OpenAL
...calling LoadLibrary( 'openal32.dll' ): succeeded
...creating AL device: succeeded
...creating AL context: succeeded
...making context current: succeeded
...shutting down OpenAL
...unloading OpenAL DLL
sound: STEREO
X..GL_ARB_multitexture not found
X..GL_ARB_texture_env_combine not found
X..GL_ARB_texture_cube_map not found
X..GL_ARB_texture_env_dot3 not found
X..GL_ARB_texture_env_add not found
X..GL_ARB_texture_non_power_of_two not found
X..GL_ARB_texture_compression not found
X..GL_EXT_texture_filter_anisotropic not found
X..GL_EXT_texture_lod not found
X..GL_1.4_texture_lod_bias not found
X..GL_EXT_shared_texture_palette not found
X..GL_EXT_texture3D not found
X..GL_EXT_stencil_wrap not found
X..GL_NV_register_combiners not found
X..GL_EXT_stencil_two_side not found
X..GL_ATI_separate_stencil not found
X..GL_ATI_fragment_shader not found
X..GL_ATI_text_fragment_shader not found
X..GL_ARB_vertex_buffer_object not found
X..GL_ARB_vertex_program not found
X..GL_ARB_fragment_program not found
********************
ERROR: The current video card / driver combination does not support the necessary features.
********************
The current video card / driver combination does not support the necessary features.
Shutting down OpenGL subsystem
...wglMakeCurrent( NULL, NULL ): success
...deleting GL context: success
...releasing DC: success
...destroying window
...resetting display
...shutting down QGL
...unloading OpenGL DLL
It seems that there is a config ini., I get the same results even if I tweak these settings.
;
; This is a configuration file for GLDirect. You don't need it to run GLDirect,
; but it lets you set options for how it works. Place it in the same folder
; as your executable.
;
[Config]
dwDriver=2
; 0=SciTech mesa SW, 1=Direct3D SW, 2=Direct3D HW
; Option here for completeness - do not use 0 or 1!
bMipmapping=0
bMultitexture=0
bWaitForRetrace=0
bFullscreenBlit=1
bFastFPU=1
bPersistantDisplay=0
bPersistantResources=0
bMessageBoxWarnings=0
bMultiThreaded=0
bHotKeySupport=0
bSplashScreen=1
; 0=off, 1=on
;
; Mipmapping and Multitexture are quality options. Turn off if crashes.
; bWaitForRetrace - Sync to vertical retrace
; bFullscreenBlit - Use Blt instead of Flip in fullscreen modes
; bFastFPU = on is faster (for games), off is higher quality (matters for CAD)
;
; bPersistantDisplay, bPersistantResources, bMessageBoxWarnings,
; bHotKeySupport, bMultiThreaded - All these are "special support options"
; which may need to match how the application uses OpenGL.
;
; bSplashScreen - seems to be unused
bAppCustomizations=1
; bAppCustomizations overwrites a number of ini values for some specific
; executables. The customisations are automatically applied when certain files
; are present. You can force a set of customisations by creating an empty file
; with the corresponding filename. Chosen customisation is logged. See the
; source code to see what each customisation does.
; Case 1: 3DStudio must be multi-threaded, 3DSMAX.EXE, 3DSVIZ.EXE, GMAX.EXE
; Case 2: Solid Edge must use pre-allocated resources for all GLRCs, PART.EXE, ASSEMBL.EXE, DRAFT.EXE, SMARTVW.EXE, SMETAL.EXE
; Case 3: Sudden Depth creates and destroys GLRCs on paint commands, SUDDEPTH.EXE, SUDDEMO.EXE
; Case 4: StereoGraphics test apps create and destroy GLRCs on paint commands, REDBLUE.EXE, DIAGNOSE.EXE
; Case 5: Pipes screen savers share multiple GLRCs for same window, PIPES.SCR, or any filename with PIPES and .SCR in it
; Case 6: AutoVue uses sub-viewport ops which are temporarily broken in stereo window, AVWIN.EXE
; Case 7: Quake3 is waiting for DDraw objects to be released at exit, any filename with QUAKE in it
; Case 8: Quake1 Engine Games (GLQuake) (complex internal rules. See source code.)
; Case 9: Reflection GLX server is unable to switch contexts at run-time, RX.EXE
; Case 10: Original AutoCAD 2000 must share DDraw objects across GLRCs, ACAD.EXE, AUtoCAD 2002 uses multithreaded
; Case 11: Game "Heavy Metal: FAKK2" sets invalid viewport dimensions, FAKK2.EXE
; Case 12: Serious Sam AND Serious Sam 2 AND other games need fullscreen, SERIOUSSAM.EXE, BUGDOM.EXE, NANOSAUR.EXE
; Case 13: Newer games from IFD need OpenGL 1.3 enabled, BUGDOM 2.EXE, NANOSAUR 2.EXE, OTTO MATIC.EXE
; Case 14: Unreal engine uses a z-trick (complex internal rules. See source code.)
dwAdapter=0
; DX8 adapter ordinal. 0 = default. Use to override if you have multiple displays.
dwTnL=0
; Transform & Lighting type.
; 0=Choose best TnL method automatically, 1=D3D Software TnL, 2=D3D Hardware TnL
dwMultisample=1
; DX8 multisample type.
; 0=None, 1=Fastest, 2=Nicest
dwLogging=1
; 0=off, 1=normal, 2=crash-proof
dwLoggingSeverity=0
; 0=all, 1=warnings+errors, 2=errors only
It seems that there is a config ini., I get the same results even if I tweak these settings.
;
; This is a configuration file for GLDirect. You don't need it to run GLDirect,
; but it lets you set options for how it works. Place it in the same folder
; as your executable.
;
[Config]
dwDriver=2
; 0=SciTech mesa SW, 1=Direct3D SW, 2=Direct3D HW
; Option here for completeness - do not use 0 or 1!
; 0=off, 1=on
;
; Mipmapping and Multitexture are quality options. Turn off if crashes.
; bWaitForRetrace - Sync to vertical retrace
; bFullscreenBlit - Use Blt instead of Flip in fullscreen modes
; bFastFPU = on is faster (for games), off is higher quality (matters for CAD)
;
; bPersistantDisplay, bPersistantResources, bMessageBoxWarnings,
; bHotKeySupport, bMultiThreaded - All these are "special support options"
; which may need to match how the application uses OpenGL.
;
; bSplashScreen - seems to be unused
bAppCustomizations=1
; bAppCustomizations overwrites a number of ini values for some specific
; executables. The customisations are automatically applied when certain files
; are present. You can force a set of customisations by creating an empty file
; with the corresponding filename. Chosen customisation is logged. See the
; source code to see what each customisation does.
; Case 1: 3DStudio must be multi-threaded, 3DSMAX.EXE, 3DSVIZ.EXE, GMAX.EXE
; Case 2: Solid Edge must use pre-allocated resources for all GLRCs, PART.EXE, ASSEMBL.EXE, DRAFT.EXE, SMARTVW.EXE, SMETAL.EXE
; Case 3: Sudden Depth creates and destroys GLRCs on paint commands, SUDDEPTH.EXE, SUDDEMO.EXE
; Case 4: StereoGraphics test apps create and destroy GLRCs on paint commands, REDBLUE.EXE, DIAGNOSE.EXE
; Case 5: Pipes screen savers share multiple GLRCs for same window, PIPES.SCR, or any filename with PIPES and .SCR in it
; Case 6: AutoVue uses sub-viewport ops which are temporarily broken in stereo window, AVWIN.EXE
; Case 7: Quake3 is waiting for DDraw objects to be released at exit, any filename with QUAKE in it
; Case 8: Quake1 Engine Games (GLQuake) (complex internal rules. See source code.)
; Case 9: Reflection GLX server is unable to switch contexts at run-time, RX.EXE
; Case 10: Original AutoCAD 2000 must share DDraw objects across GLRCs, ACAD.EXE, AUtoCAD 2002 uses multithreaded
; Case 11: Game "Heavy Metal: FAKK2" sets invalid viewport dimensions, FAKK2.EXE
; Case 12: Serious Sam AND Serious Sam 2 AND other games need fullscreen, SERIOUSSAM.EXE, BUGDOM.EXE, NANOSAUR.EXE
; Case 13: Newer games from IFD need OpenGL 1.3 enabled, BUGDOM 2.EXE, NANOSAUR 2.EXE, OTTO MATIC.EXE
; Case 14: Unreal engine uses a z-trick (complex internal rules. See source code.)
dwAdapter=0
; DX8 adapter ordinal. 0 = default. Use to override if you have multiple displays.
I tried TitaniumGL, it's a proxy dll like GLDirect. http://www.titaniumgl.tk/
It launched without crashing and 3D Vision enabled but it was all messed up.
The guy updates it and it's W7 compatible but the site is kinda sketchy, a few times I went there I got some BS pop-up telling me to update Adobe.
TitaniumGL can be downloaded as a demo version, but otherwise it's 7USD.
If it worked, it would be an option. It does work on older games though.
http://www.titaniumgl.tk/
BTW, TitaniumGL crashes swkotor.
[url=http://en.wikipedia.org/wiki/ARB_assembly_language]http://en.wikipedia.org/wiki/ARB_assembly_language[/url]
ARB is an extension. You need to get the functions with ARB extension in order to get access to ARB ASM shaders (creating, compiling etc).
EXT is also an extension but is proprietary to the manufacturer (in this case Nvidia). All the DX-OGL interop functions that I use are with EXT on the end.
The normal functions (without ARB/EXT) are core openGl functions, which by default will use the GLSL shading language now.
Now, I don't know how GLDirect Works but in my wrapper's case I do query with wglGetProcessAddress only the functions that I want to detour. All the others are just passed-though to the real OpenGL32.dll file.
The reason GLDirect fails can be numerous... gave it a quick look in the code from that 1st version but can't seem to find anything related to this...
Regarding SWKOTOR, I gave it a look yesterday using my wrapper, and while it doesn't crash and I am able to activate 3D VIsion (only in Window Mode for some weird reason) the game is not using only shaders to draw:
- There are around 10 shaders in a scene. Of which 2 are constantly used (for characters). The rest of the scene is not using a shader, so I expect the engine is using the fixed pipeline rather than the programmable one... glBegin() Draw() glEnd(), in which case the stereo injection cannot happen in the shaders.
So, in this case we need to hook the Matrix functions in OGL and create there the 2 perspectives...
This is the trouble with old OGL engines... (it was a bit of chaos back then ^_^).
It would be awesome if SWKOTOR would have the engine as open source.. in which case I would easily implement stereo 3D in it;)) (like Doom3 BFG is opensourced)...
So I came across this:
http://www.phoronix.com/scan.php?page=news_item&px=MTI1ODc
https://www.youtube.com/watch?v=rawkCx9apHg
Now I am interested on how easily this can be achieved;))
ARB is an extension. You need to get the functions with ARB extension in order to get access to ARB ASM shaders (creating, compiling etc).
EXT is also an extension but is proprietary to the manufacturer (in this case Nvidia). All the DX-OGL interop functions that I use are with EXT on the end.
The normal functions (without ARB/EXT) are core openGl functions, which by default will use the GLSL shading language now.
Now, I don't know how GLDirect Works but in my wrapper's case I do query with wglGetProcessAddress only the functions that I want to detour. All the others are just passed-though to the real OpenGL32.dll file.
The reason GLDirect fails can be numerous... gave it a quick look in the code from that 1st version but can't seem to find anything related to this...
Regarding SWKOTOR, I gave it a look yesterday using my wrapper, and while it doesn't crash and I am able to activate 3D VIsion (only in Window Mode for some weird reason) the game is not using only shaders to draw:
- There are around 10 shaders in a scene. Of which 2 are constantly used (for characters). The rest of the scene is not using a shader, so I expect the engine is using the fixed pipeline rather than the programmable one... glBegin() Draw() glEnd(), in which case the stereo injection cannot happen in the shaders.
So, in this case we need to hook the Matrix functions in OGL and create there the 2 perspectives...
This is the trouble with old OGL engines... (it was a bit of chaos back then ^_^).
It would be awesome if SWKOTOR would have the engine as open source.. in which case I would easily implement stereo 3D in it;)) (like Doom3 BFG is opensourced)...
Now I am interested on how easily this can be achieved;))
1x Palit RTX 2080Ti Pro Gaming OC(watercooled and overclocked to hell)
3x 3D Vision Ready Asus VG278HE monitors (5760x1080).
Intel i9 9900K (overclocked to 5.3 and watercooled ofc).
Asus Maximus XI Hero Mobo.
16 GB Team Group T-Force Dark Pro DDR4 @ 3600.
Lots of Disks:
- Raid 0 - 256GB Sandisk Extreme SSD.
- Raid 0 - WD Black - 2TB.
- SanDisk SSD PLUS 480 GB.
- Intel 760p 256GB M.2 PCIe NVMe SSD.
Creative Sound Blaster Z.
Windows 10 x64 Pro.
etc
Just thinking out loud here-
It doesn't seem to me that the game Prey actually uses those old ARB shaders. The game runs on modern windows without any trouble right, and that would be using the opengl32.dll from Sytem32, that comes with Windows.
I inspected that dll with Dependency Walker, and there aren't any of those old calls there, no implementation of ARB that I can see. Makes sense because that's very old, and an extension anyway. I don't think the opengl32.dll has any COM like aspects where it can fetch hidden routines from inside of objects.
Assuming that's true, then the ARB logging we see there would be some sort of fallback system the game uses when it can't find what it thought. Like, it is looking for normal OpenGL 2.0 maybe (based on release dates). If it can't find that version, it might fall back to older and older technology in order to play. Like a mechanism to see what the video card supports, versioning, and then fallbacks.
If it falls far enough back, to antique ARB shaders and can't find them, then it just bails out.
Does that seem plausible?
If that seems plausible, that would suggest the real problem here is that something about GLDirect is not reporting capabilities correctly, saying the harder is dumber than it really is.
So, maybe it's worth taking a look at config files to see if there is a way to say it directly supports OpenGL 2.0 or something.
Not sure of course, just thinking.
How does the versioning of OpenGL happen? What call determines feature level?
It doesn't seem to me that the game Prey actually uses those old ARB shaders. The game runs on modern windows without any trouble right, and that would be using the opengl32.dll from Sytem32, that comes with Windows.
I inspected that dll with Dependency Walker, and there aren't any of those old calls there, no implementation of ARB that I can see. Makes sense because that's very old, and an extension anyway. I don't think the opengl32.dll has any COM like aspects where it can fetch hidden routines from inside of objects.
Assuming that's true, then the ARB logging we see there would be some sort of fallback system the game uses when it can't find what it thought. Like, it is looking for normal OpenGL 2.0 maybe (based on release dates). If it can't find that version, it might fall back to older and older technology in order to play. Like a mechanism to see what the video card supports, versioning, and then fallbacks.
If it falls far enough back, to antique ARB shaders and can't find them, then it just bails out.
Does that seem plausible?
If that seems plausible, that would suggest the real problem here is that something about GLDirect is not reporting capabilities correctly, saying the harder is dumber than it really is.
So, maybe it's worth taking a look at config files to see if there is a way to say it directly supports OpenGL 2.0 or something.
Not sure of course, just thinking.
How does the versioning of OpenGL happen? What call determines feature level?
Acer H5360 (1280x720@120Hz) - ASUS VG248QE with GSync mod - 3D Vision 1&2 - Driver 372.54
GTX 970 - i5-4670K@4.2GHz - 12GB RAM - Win7x64+evilKB2670838 - 4 Disk X25 RAID
SAGER NP9870-S - GTX 980 - i7-6700K - Win10 Pro 1607 Latest 3Dmigoto Release Bo3b's School for ShaderHackers
That whole ARB thing confused me at first because I'd see it in newer games.
Then I found out that ARB simply meant that it was an "extension" that had been officially approved by the OpenGL "Architecture Review Board" (ARB)
https://www.opengl.org/registry/doc/rules.html
[url]https://www.opengl.org/registry/#headers[/url]
https://www.opengl.org/wiki/OpenGL_Extension
swkotor launched using OpenGL 1.4 as far as I know
https://www.opengl.org/registry/doc/glspec14.pdf
What still confuses me is that there was talk about depreciating anything that was pre OpenGL 2.0 in Vista and using an emulator to wrap the calls to DX. But then I also read that since there was such a huge stink, Microsoft didn't implement the emulator.
What still confuses me is that there was talk about depreciating anything that was pre OpenGL 2.0 in Vista and using an emulator to wrap the calls to DX. But then I also read that since there was such a huge stink, Microsoft didn't implement the emulator.
[MonitorSizeOverride][Global/Base Profile Tweaks][Depth=IPD]
That's why I was thinking that maybe an older version of OpenGL32.dll might allow this to work.
I'm not sure that OpenGL32.dll is actually GLDirect though. I have an OpenGL32.dll file on my system, and I haven't installed anything special. Moreover that file is copyright Microsoft, and is apparently part of Windows.
I looked at the headers of OpenGL32.dll with Dependency Walker, and there are no ARB style calls in there. If that's a Windows file, then that would suggest that an older OpenGL32.dll from prior Windows might be the trick. Does the game run on XP for example?
Acer H5360 (1280x720@120Hz) - ASUS VG248QE with GSync mod - 3D Vision 1&2 - Driver 372.54
GTX 970 - i5-4670K@4.2GHz - 12GB RAM - Win7x64+evilKB2670838 - 4 Disk X25 RAID
SAGER NP9870-S - GTX 980 - i7-6700K - Win10 Pro 1607
Latest 3Dmigoto Release
Bo3b's School for ShaderHackers
The second log file I posted was generated by the game after successfully launching in 2D without the GLDirect opengl32.dll in the game folder. I obtained it by pulling it from the console command window.
I do know that others have used GLDirect with windows 7 64 bit on other games without trouble, so I'd assume my OS isn't the problem. But I've no idea, it's all Latin to me, unfortunately.
If I can ever find a copy of Windows XP on Craigslist, I'll be able to finish building a legacy rig to play Prey, swkotor and Riddick.
So that first log is coming from the game itself, right? Not from GLDirect's version of OpenGL.
If that is correct, then the problem there is that the game is looking for old, old, calls like wglGetExtensionsStringARB. All the ARB stuff. And, that ARB stuff does not exist in the version of GLDirect that you are using, hence the failures being logged.
If that is all correct, then you should try to find an older GLDirect that supports those ARB calls, if one exists. I can tell you for sure that the latest version off SourceForge does not support those old calls, and there is no history there so I can't tell if it supported them in the past and were removed, or whether it never supported ARB calls.
Acer H5360 (1280x720@120Hz) - ASUS VG248QE with GSync mod - 3D Vision 1&2 - Driver 372.54
GTX 970 - i5-4670K@4.2GHz - 12GB RAM - Win7x64+evilKB2670838 - 4 Disk X25 RAID
SAGER NP9870-S - GTX 980 - i7-6700K - Win10 Pro 1607
Latest 3Dmigoto Release
Bo3b's School for ShaderHackers
Then I dropped it with Alice and it ran fine but I don't think it was actually using it because I was able to delete the dll while the game was running, pretty sure it should've been locked. Either way here's the output from Prey crashing with the WinXP OpenGL dll basically the same thing as D-Man11's.
[MonitorSizeOverride][Global/Base Profile Tweaks][Depth=IPD]
GLD: (SYS) Driver : SciTech GLDirect 5.0
GLD: (SYS) Executable : I:\Program Files (x86)\Prey\prey.exe
GLD: (SYS) DirectDraw device: Primary
GLD: (SYS) Direct3D driver : Direct3D Hardware Renderer
GLD: (SYS) Rendering type : Direct3D HW
GLD: (SYS) Multithreaded : Disabled
GLD: (SYS) Display resources: Instanced
GLD: (SYS) Buffer resources : Instanced
GLD: (SYS) Vertex Shader : 3.0
GLD: (SYS) Pixel Shader : 3.0
GLD: (SYS) DirectX Version : 9.0 or above
GLD: (INF)
GLD: (INF) Pixel Formats:
GLD: (INF) visual x bf lv rg d st r g b a ax dp st accum buffs ms
GLD: (INF) id dep cl sp sz l ci b ro sz sz sz sz bf th cl r g b a ns b
GLD: (INF) -----------------------------------------------------------------
GLD: (INF) 0x01 32 wn . 32 . r . . 8 8 8 . . 16 . . . . . . .
GLD: (INF) 0x02 32 wn . 32 . r . . 8 8 8 . . 32 . . . . . . .
GLD: (INF) 0x03 32 wn . 32 . r . . 8 8 8 . . 32 8 . . . . . .
GLD: (INF) 0x04 32 wn . 32 . r y . 8 8 8 . . 16 . . . . . . .
GLD: (INF) 0x05 32 wn . 32 . r y . 8 8 8 . . 32 . . . . . . .
GLD: (INF) 0x06 32 wn . 32 . r y . 8 8 8 . . 32 8 . . . . . .
GLD: (INF) -----------------------------------------------------------------
GLD: (INF)
GLD: (SYS) ChoosePixelFormat:
GLD: (INF) Input pixel format for ChoosePixelFormat:
GLD: (INF) visual x bf lv rg d st r g b a ax dp st accum buffs ms
GLD: (INF) id dep cl sp sz l ci b ro sz sz sz sz bf th cl r g b a ns b
GLD: (INF) -----------------------------------------------------------------
GLD: (INF) . 24 wn . 24 . r y . . . . 8 . 8 . . . . 24 . .
GLD: (INF) -----------------------------------------------------------------
GLD: (INF)
GLD: (SYS) Pixel Format 6 chosen by default
GLD: (SYS) SetPixelFormat: PixelFormat 6 has been set
GLD: (SYS) gldCreateContext for HDC=1901071E, ThreadId=2C18
GLD: (SYS) gldCreateContextBuffers for HDC=1901071E
GLD: (INF) Input window 1805DA: w=624, h=442
GLD: (INF) OS: Win2000/XP
GLD: (SYS) [DDI Driver Level : 900]
GLD: (INF) [Driver Description: NVIDIA GeForce GTX 480]
GLD: (INF) [Driver file: nvd3dum.dll 9.18.13.5012]
GLD: (INF) [VendorId: 0x10DE, DeviceId: 0x6C0, SubSysId: 0x75F10DE, Revision: 0xA3]
GLD: (INF) Can Scissor: Yes
GLD: (INF) Window: w=624, h=442 (windowed)
GLD: (INF) HW TnL: Enabled
GLD: (SYS) gldCreateContext succeeded for HGLRC=1
GLD: (SYS) gldDeleteContext: Deleting context HGLRC=1, ThreadId=2C18
GLD: (SYS) gldCreateContext for HDC=1901071E, ThreadId=2C18
GLD: (SYS) gldCreateContextBuffers for HDC=1901071E
GLD: (INF) Input window 1805DA: w=624, h=442
GLD: (INF) OS: Win2000/XP
GLD: (SYS) [DDI Driver Level : 900]
GLD: (INF) [Driver Description: NVIDIA GeForce GTX 480]
GLD: (INF) [Driver file: nvd3dum.dll 9.18.13.5012]
GLD: (INF) [VendorId: 0x10DE, DeviceId: 0x6C0, SubSysId: 0x75F10DE, Revision: 0xA3]
GLD: (INF) Can Scissor: Yes
GLD: (INF) Window: w=624, h=442 (windowed)
GLD: (INF) HW TnL: Enabled
GLD: (SYS) gldCreateContext succeeded for HGLRC=1
GLD: (INF) GetProcAddress: wglGetExtensionsStringARB (Failed)
GLD: (INF) GetProcAddress: wglSwapIntervalEXT (Failed)
GLD: (INF) GetProcAddress: wglGetPixelFormatAttribivARB (Failed)
GLD: (INF) GetProcAddress: wglGetPixelFormatAttribfvARB (Failed)
GLD: (INF) GetProcAddress: wglChoosePixelFormatARB (Failed)
GLD: (INF) GetProcAddress: wglCreatePbufferARB (Failed)
GLD: (INF) GetProcAddress: wglGetPbufferDCARB (Failed)
GLD: (INF) GetProcAddress: wglReleasePbufferDCARB (Failed)
GLD: (INF) GetProcAddress: wglDestroyPbufferARB (Failed)
GLD: (INF) GetProcAddress: wglQueryPbufferARB (Failed)
GLD: (INF) GetProcAddress: wglBindTexImageARB (Failed)
GLD: (INF) GetProcAddress: wglReleaseTexImageARB (Failed)
GLD: (INF) GetProcAddress: wglSetPbufferAttribARB (Failed)
GLD: (SYS) gldDeleteContext: Deleting context HGLRC=1, ThreadId=2C18
GLD: (WRN) gldDeleteContext: context HGLRC=1 still active
GLD: (SYS) ChoosePixelFormat:
GLD: (INF) Input pixel format for ChoosePixelFormat:
GLD: (INF) visual x bf lv rg d st r g b a ax dp st accum buffs ms
GLD: (INF) id dep cl sp sz l ci b ro sz sz sz sz bf th cl r g b a ns b
GLD: (INF) -----------------------------------------------------------------
GLD: (INF) . 32 wn . 32 . r y . . . . 8 . 24 8 . . . . . .
GLD: (INF) -----------------------------------------------------------------
GLD: (INF)
GLD: (SYS) Pixel Format 6 chosen by default
GLD: (SYS) SetPixelFormat: PixelFormat 6 has been set
GLD: (SYS) gldCreateContext for HDC=91011E25, ThreadId=2C18
GLD: (SYS) gldCreateContextBuffers for HDC=91011E25
GLD: (INF) Input window 1905DA: w=1920, h=1080
GLD: (INF) OS: Win2000/XP
GLD: (SYS) [DDI Driver Level : 900]
GLD: (INF) [Driver Description: NVIDIA GeForce GTX 480]
GLD: (INF) [Driver file: nvd3dum.dll 9.18.13.5012]
GLD: (INF) [VendorId: 0x10DE, DeviceId: 0x6C0, SubSysId: 0x75F10DE, Revision: 0xA3]
GLD: (INF) Can Scissor: Yes
GLD: (INF) Window: w=1920, h=1080 (fullscreen)
GLD: (INF) HW TnL: Enabled
GLD: (SYS) gldCreateContext succeeded for HGLRC=1
GLD: (INF) GetProcAddress: glGenBuffersARB (Failed)
GLD: (INF) GetProcAddress: glDeleteBuffersARB (Failed)
GLD: (INF) GetProcAddress: glBindBufferARB (Failed)
GLD: (INF) GetProcAddress: glBufferDataARB (Failed)
GLD: (INF) GetProcAddress: glMapBufferARB (Failed)
GLD: (INF) GetProcAddress: glUnmapBufferARB (Failed)
GLD: (INF) GetProcAddress: glActiveTextureARB (OK)
GLD: (INF) GetProcAddress: glBindFramebuffer (Failed)
GLD: (INF) GetProcAddress: glBindRenderbuffer (Failed)
GLD: (INF) GetProcAddress: glUseProgram (Failed)
GLD: (INF) GetProcAddress: wglGetExtensionsStringARB (Failed)
GLD: (INF) GetProcAddress: wglSwapIntervalEXT (Failed)
GLD: (INF) GetProcAddress: wglGetPixelFormatAttribivARB (Failed)
GLD: (INF) GetProcAddress: wglGetPixelFormatAttribfvARB (Failed)
GLD: (INF) GetProcAddress: wglChoosePixelFormatARB (Failed)
GLD: (INF) GetProcAddress: wglCreatePbufferARB (Failed)
GLD: (INF) GetProcAddress: wglGetPbufferDCARB (Failed)
GLD: (INF) GetProcAddress: wglReleasePbufferDCARB (Failed)
GLD: (INF) GetProcAddress: wglDestroyPbufferARB (Failed)
GLD: (INF) GetProcAddress: wglQueryPbufferARB (Failed)
GLD: (INF) GetProcAddress: wglBindTexImageARB (Failed)
GLD: (INF) GetProcAddress: wglReleaseTexImageARB (Failed)
GLD: (INF) GetProcAddress: wglSetPbufferAttribARB (Failed)
GLD: (INF) GetProcAddress: glMultiTexCoord2fARB (OK)
GLD: (INF) GetProcAddress: glMultiTexCoord2fvARB (OK)
GLD: (INF) GetProcAddress: glActiveTextureARB (OK)
GLD: (INF) GetProcAddress: glClientActiveTextureARB (OK)
GLD: (SYS) gldDeleteContext: Deleting context HGLRC=1, ThreadId=2C18
GLD: (SYS) <- Logging Ended
;
; This is a configuration file for GLDirect. You don't need it to run GLDirect,
; but it lets you set options for how it works. Place it in the same folder
; as your executable.
;
[Config]
dwDriver=2
; 0=SciTech mesa SW, 1=Direct3D SW, 2=Direct3D HW
; Option here for completeness - do not use 0 or 1!
bMipmapping=0
bMultitexture=0
bWaitForRetrace=0
bFullscreenBlit=1
bFastFPU=1
bPersistantDisplay=0
bPersistantResources=0
bMessageBoxWarnings=0
bMultiThreaded=0
bHotKeySupport=0
bSplashScreen=1
; 0=off, 1=on
;
; Mipmapping and Multitexture are quality options. Turn off if crashes.
; bWaitForRetrace - Sync to vertical retrace
; bFullscreenBlit - Use Blt instead of Flip in fullscreen modes
; bFastFPU = on is faster (for games), off is higher quality (matters for CAD)
;
; bPersistantDisplay, bPersistantResources, bMessageBoxWarnings,
; bHotKeySupport, bMultiThreaded - All these are "special support options"
; which may need to match how the application uses OpenGL.
;
; bSplashScreen - seems to be unused
bAppCustomizations=1
; bAppCustomizations overwrites a number of ini values for some specific
; executables. The customisations are automatically applied when certain files
; are present. You can force a set of customisations by creating an empty file
; with the corresponding filename. Chosen customisation is logged. See the
; source code to see what each customisation does.
; Case 1: 3DStudio must be multi-threaded, 3DSMAX.EXE, 3DSVIZ.EXE, GMAX.EXE
; Case 2: Solid Edge must use pre-allocated resources for all GLRCs, PART.EXE, ASSEMBL.EXE, DRAFT.EXE, SMARTVW.EXE, SMETAL.EXE
; Case 3: Sudden Depth creates and destroys GLRCs on paint commands, SUDDEPTH.EXE, SUDDEMO.EXE
; Case 4: StereoGraphics test apps create and destroy GLRCs on paint commands, REDBLUE.EXE, DIAGNOSE.EXE
; Case 5: Pipes screen savers share multiple GLRCs for same window, PIPES.SCR, or any filename with PIPES and .SCR in it
; Case 6: AutoVue uses sub-viewport ops which are temporarily broken in stereo window, AVWIN.EXE
; Case 7: Quake3 is waiting for DDraw objects to be released at exit, any filename with QUAKE in it
; Case 8: Quake1 Engine Games (GLQuake) (complex internal rules. See source code.)
; Case 9: Reflection GLX server is unable to switch contexts at run-time, RX.EXE
; Case 10: Original AutoCAD 2000 must share DDraw objects across GLRCs, ACAD.EXE, AUtoCAD 2002 uses multithreaded
; Case 11: Game "Heavy Metal: FAKK2" sets invalid viewport dimensions, FAKK2.EXE
; Case 12: Serious Sam AND Serious Sam 2 AND other games need fullscreen, SERIOUSSAM.EXE, BUGDOM.EXE, NANOSAUR.EXE
; Case 13: Newer games from IFD need OpenGL 1.3 enabled, BUGDOM 2.EXE, NANOSAUR 2.EXE, OTTO MATIC.EXE
; Case 14: Unreal engine uses a z-trick (complex internal rules. See source code.)
dwAdapter=0
; DX8 adapter ordinal. 0 = default. Use to override if you have multiple displays.
dwTnL=0
; Transform & Lighting type.
; 0=Choose best TnL method automatically, 1=D3D Software TnL, 2=D3D Hardware TnL
dwMultisample=1
; DX8 multisample type.
; 0=None, 1=Fastest, 2=Nicest
dwLogging=1
; 0=off, 1=normal, 2=crash-proof
dwLoggingSeverity=0
; 0=all, 1=warnings+errors, 2=errors only
It launched without crashing and 3D Vision enabled but it was all messed up.
The guy updates it and it's W7 compatible but the site is kinda sketchy, a few times I went there I got some BS pop-up telling me to update Adobe.
TitaniumGL can be downloaded as a demo version, but otherwise it's 7USD.
If it worked, it would be an option. It does work on older games though.
http://www.titaniumgl.tk/
BTW, TitaniumGL crashes swkotor.
ARB is an extension. You need to get the functions with ARB extension in order to get access to ARB ASM shaders (creating, compiling etc).
EXT is also an extension but is proprietary to the manufacturer (in this case Nvidia). All the DX-OGL interop functions that I use are with EXT on the end.
The normal functions (without ARB/EXT) are core openGl functions, which by default will use the GLSL shading language now.
Now, I don't know how GLDirect Works but in my wrapper's case I do query with wglGetProcessAddress only the functions that I want to detour. All the others are just passed-though to the real OpenGL32.dll file.
The reason GLDirect fails can be numerous... gave it a quick look in the code from that 1st version but can't seem to find anything related to this...
Regarding SWKOTOR, I gave it a look yesterday using my wrapper, and while it doesn't crash and I am able to activate 3D VIsion (only in Window Mode for some weird reason) the game is not using only shaders to draw:
- There are around 10 shaders in a scene. Of which 2 are constantly used (for characters). The rest of the scene is not using a shader, so I expect the engine is using the fixed pipeline rather than the programmable one... glBegin() Draw() glEnd(), in which case the stereo injection cannot happen in the shaders.
So, in this case we need to hook the Matrix functions in OGL and create there the 2 perspectives...
This is the trouble with old OGL engines... (it was a bit of chaos back then ^_^).
It would be awesome if SWKOTOR would have the engine as open source.. in which case I would easily implement stereo 3D in it;)) (like Doom3 BFG is opensourced)...
So I came across this:
http://www.phoronix.com/scan.php?page=news_item&px=MTI1ODc
Now I am interested on how easily this can be achieved;))
1x Palit RTX 2080Ti Pro Gaming OC(watercooled and overclocked to hell)
3x 3D Vision Ready Asus VG278HE monitors (5760x1080).
Intel i9 9900K (overclocked to 5.3 and watercooled ofc).
Asus Maximus XI Hero Mobo.
16 GB Team Group T-Force Dark Pro DDR4 @ 3600.
Lots of Disks:
- Raid 0 - 256GB Sandisk Extreme SSD.
- Raid 0 - WD Black - 2TB.
- SanDisk SSD PLUS 480 GB.
- Intel 760p 256GB M.2 PCIe NVMe SSD.
Creative Sound Blaster Z.
Windows 10 x64 Pro.
etc
My website with my fixes and OpenGL to 3D Vision wrapper:
http://3dsurroundgaming.com
(If you like some of the stuff that I've done and want to donate something, you can do it with PayPal at tavyhome@gmail.com)
It doesn't seem to me that the game Prey actually uses those old ARB shaders. The game runs on modern windows without any trouble right, and that would be using the opengl32.dll from Sytem32, that comes with Windows.
I inspected that dll with Dependency Walker, and there aren't any of those old calls there, no implementation of ARB that I can see. Makes sense because that's very old, and an extension anyway. I don't think the opengl32.dll has any COM like aspects where it can fetch hidden routines from inside of objects.
Assuming that's true, then the ARB logging we see there would be some sort of fallback system the game uses when it can't find what it thought. Like, it is looking for normal OpenGL 2.0 maybe (based on release dates). If it can't find that version, it might fall back to older and older technology in order to play. Like a mechanism to see what the video card supports, versioning, and then fallbacks.
If it falls far enough back, to antique ARB shaders and can't find them, then it just bails out.
Does that seem plausible?
If that seems plausible, that would suggest the real problem here is that something about GLDirect is not reporting capabilities correctly, saying the harder is dumber than it really is.
So, maybe it's worth taking a look at config files to see if there is a way to say it directly supports OpenGL 2.0 or something.
Not sure of course, just thinking.
How does the versioning of OpenGL happen? What call determines feature level?
Acer H5360 (1280x720@120Hz) - ASUS VG248QE with GSync mod - 3D Vision 1&2 - Driver 372.54
GTX 970 - i5-4670K@4.2GHz - 12GB RAM - Win7x64+evilKB2670838 - 4 Disk X25 RAID
SAGER NP9870-S - GTX 980 - i7-6700K - Win10 Pro 1607
Latest 3Dmigoto Release
Bo3b's School for ShaderHackers
Acer H5360 (1280x720@120Hz) - ASUS VG248QE with GSync mod - 3D Vision 1&2 - Driver 372.54
GTX 970 - i5-4670K@4.2GHz - 12GB RAM - Win7x64+evilKB2670838 - 4 Disk X25 RAID
SAGER NP9870-S - GTX 980 - i7-6700K - Win10 Pro 1607
Latest 3Dmigoto Release
Bo3b's School for ShaderHackers
Then I found out that ARB simply meant that it was an "extension" that had been officially approved by the OpenGL "Architecture Review Board" (ARB)
https://www.opengl.org/registry/doc/rules.html
https://www.opengl.org/registry/#headers
https://www.opengl.org/wiki/OpenGL_Extension
swkotor launched using OpenGL 1.4 as far as I know
https://www.opengl.org/registry/doc/glspec14.pdf
What still confuses me is that there was talk about depreciating anything that was pre OpenGL 2.0 in Vista and using an emulator to wrap the calls to DX. But then I also read that since there was such a huge stink, Microsoft didn't implement the emulator.