The following is copy pasted directly from another topic on another forum:
Hey guys,
I browsed the interweb for this a bit but I couldn't find anything. I thought I'd go to the irc channel after that, but enterthegame won't let me on, so... here I am!
I'm currently working on a CAVE at work, and I'm responsible for setting up a generic set of libraries and tools to make it easy for people to run their OpenGL software in our CAVE. To demonstrate how "easy" this would be I decided to port Unreal Tournament99 to our CAVE since I remembered that the headers for the 432 update were released several years back. I got the file and I located the OpenGLDrv project and got to work.
I had to make some adjustments to the code to get it to run on MVS 2005 but I got there eventually. Now I can succesfully compile a .dll. The thing is, I can't replicate the OpenGLDrv.dll so that it will work in UT (my version is 432 btw). And I can't make my FCOpenGLDrv.dll either.
I don't know where to tell UT to look for my new FCOpenGLDrv.dll. I can only specifiy that it exists (Default.ini, UnrealTournament.ini, Setup.int, Manifest.ini), not where to look for it. I also created a FCOpenGLDrv.int but that file isn't found by UnrealTournament either (I still get a "VideoDriverName" default name ingame). But even more mystifying than this, I can't replace my existing OpenGlDrv.dll with my new OpenGLDrv.dll and get it to work (even though the code is largely thesame).
Init: Input system initialized for WindowsViewport0
Log: Opened viewport
Warning: Failed to load 'OpenGLDrv': Can't find file for package 'OpenGLDrv'
Warning: Failed to load 'Class OpenGLDrv.OpenGLRenderDevice': Can't find file for package 'OpenGLDrv'
Warning: Can't find file for package 'OpenGLDrv'
Warning: Can't find file for package 'OpenGLDrv'
Log: Bound to SoftDrv.dll
By looking at the code I gather that (apart from inheriting from URenderDevice and writing actual working code) the 3 key things to make a rendering device UT compatible would be.
DECLARE_CLASS(UOpenGLRenderDevice,URenderDevice,CLASS_Config,OpenGLDrv);
IMPLEMENT_CLASS(UOpenGLRenderDevice);
IMPLEMENT_PACKAGE(OpenGLDrv);
I figured that these MACROS were created to make it easy to add your own NEW rendering device to UT. I suppose it's not very strange that we don't see a lot of those going around, because it's not working! UT cannot load my 'Package' because it cannot be found, even though all I did was replace the old OpenGLDrv.dll with a freshly compiled one.
Now it's not very suprising that adding a NEW rendering device won't work either:
class UFCOpenGLRenderDevice : public URenderDevice
{
...
DECLARE_CLASS(UFCOpenGLRenderDevice,URenderDevice,CLASS_Config,FCOpenGLDrv);
...
};
IMPLEMENT_CLASS(UFCOpenGLRenderDevice);
IMPLEMENT_PACKAGE(FCOpenGLDrv);
...
Although playing around with OpenGLDrv.dll tells me that there's something wrong with the .dll itself, I can't help but wonder how the hell UT is supposed to find my new FCOpenGLDrv.dll even if something wasn't wrong with it. Editing everything around the .dll all seems to work. But getting UT to work with it doesn't. Here's the error.
Init: Input system initialized for WindowsViewport0
Log: Opened viewport
Warning: Failed to load 'FCOpenGLDrv': Can't find file for package 'FCOpenGLDrv'
Warning: Failed to load 'Class FCOpenGLDrv.FCOpenGLRenderDevice': Can't find file for package 'FCOpenGLDrv'
Warning: Can't find file for package 'FCOpenGLDrv'
Warning: Can't find file for package 'FCOpenGLDrv'
Log: Bound to SoftDrv.dll
hmmm... looks familiar...
Does anyone have any experience dealing with Rendering Devices in UT. Help would be greatly appreciated.
Oh and please don't refer me to the existing CaveUT projects <.<
Thx!