ArbBackend.cpp
00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00027 #include <iostream>
00028 #include "Arb.hpp"
00029 #include "GlTextures.hpp"
00030 #include "GlBackend.hpp"
00031 #ifndef WIN32
00032 #include "PBufferStreams.hpp"
00033 #endif
00034 #ifdef WIN32
00035 #include <windows.h>
00036 #endif
00037 
00038 namespace shgl {
00039 
00040 struct ArbBackend : public GlBackend {
00041   ArbBackend()
00042     : GlBackend(new ArbCodeStrategy(),
00043                 new GlTextures(),
00044 #ifdef WIN32
00045                 0)
00046 #else
00047                 new PBufferStreams())
00048 #endif
00049   {
00050   }
00051 
00052   std::string name() const { return "arb"; }
00053 };
00054 
00055 #ifdef WIN32
00056 static ArbBackend* backend = 0;
00057 
00058 extern "C"
00059 BOOL APIENTRY DllMain(HANDLE hModule, 
00060                       DWORD  ul_reason_for_call, 
00061                       LPVOID lpReserved)
00062 {
00063   std::cerr << "Arb Backend DllMain called!" << std::endl;
00064   std::cerr << "Have backend: " << backend << std::endl;
00065   std::cerr << "lpReserved = " << lpReserved << std::endl;
00066   std::cerr << "hModule = " << lpReserved << std::endl;
00067   switch (ul_reason_for_call) {
00068   case DLL_PROCESS_ATTACH:
00069     std::cerr << "Process attach!" << std::endl;
00070     if (backend) return TRUE;
00071     backend = new ArbBackend();
00072     break;
00073   case DLL_THREAD_ATTACH:
00074   case DLL_THREAD_DETACH:
00075     std::cerr << "Thread!" << std::endl;
00076     break;
00077   case DLL_PROCESS_DETACH:
00078     std::cerr << "Process detach!" << std::endl;
00079     delete backend;
00080     std::cerr << "Deleted backend!" << std::endl;
00081     break;
00082   default:
00083     std::cerr << "Some Other Thing!" << std::endl;
00084   }
00085   return TRUE;
00086 }
00087 
00088 #else
00089 static ArbBackend* backend = new ArbBackend();
00090 #endif
00091 }
Generated on Mon Oct 18 14:17:38 2004 for Sh by
 1.3.7
 1.3.7