3dfx OpenGL, and ICD
Hey all.
I have read that 3dfx can''t write a ICD for it''s voodoo cards. However, it does have a full opengl driver. How do I access it in C++?
Just so you know, Voodoo cards can''t have an ICD because they are full-screen only and a full OpenGL implementation includes windowed mode--which is why Voodoo 3''s DO have a full ICD (such as it is). SO, to your real question.
There are two ways to use 3dfx''s standalone OpenGL driver. First, you can link to 3dfx''s version of the OpenGL static libraries when you build your game. This is a little sketchy because you can''t link to both the default OpenGL libraries and the 3dfx libraries at the same time since they duplicate the same functions. What that ultimately means is your game can run standard OpenGL OR 3dfx OpenGL--not both.
The other way is a little more complicated, but cleaner and more powerful. You can dynamically link to the standalone drivers and then use it (almost) just as you would the normal OpenGL driver. There is a pretty good article about this on this site if you go to the Developer Resources section, OpenGL subsection, and look for "Taking advantage of the new Quake compatible OpenGL drivers for Voodoo1/2".
Good luck!
There are two ways to use 3dfx''s standalone OpenGL driver. First, you can link to 3dfx''s version of the OpenGL static libraries when you build your game. This is a little sketchy because you can''t link to both the default OpenGL libraries and the 3dfx libraries at the same time since they duplicate the same functions. What that ultimately means is your game can run standard OpenGL OR 3dfx OpenGL--not both.
The other way is a little more complicated, but cleaner and more powerful. You can dynamically link to the standalone drivers and then use it (almost) just as you would the normal OpenGL driver. There is a pretty good article about this on this site if you go to the Developer Resources section, OpenGL subsection, and look for "Taking advantage of the new Quake compatible OpenGL drivers for Voodoo1/2".
Good luck!
I tried the article you where talking about already, but I can''t get it to compile. I get the link errors:
OpenGLSetPixelFormat(struct HDC__ *,int,struct tagPIXELFORMATDESCRIPTOR
const *)"
(?OpenGLSetPixelFormat@@YGHPAUHDC__@@HPBUtagPIXELFORMATDESCRIPTOR@@@Z)
main.obj : error LNK2001: unresolved external symbol "int __stdcall
OpenGLChoosePixelFormat(struct HDC__ *,struct tagPIXELFORMATDESCRIPTOR const
*)" (?OpenGLChoosePixelFormat@@YGHPAUHDC__@@PBUtagPIXELFORMATDESCRIPTOR@@@Z)
main.obj : error LNK2001: unresolved external symbol "int __stdcall
OpenGLSwapBuffers(struct HDC__ *)" (?OpenGLSwapBuffers@@YGHPAUHDC__@@@Z)
main.obj : error LNK2001: unresolved external symbol "int __stdcall
OpenGLDeleteContext(struct HGLRC__ *)"
(?OpenGLDeleteContext@@YGHPAUHGLRC__@@@Z)
main.obj : error LNK2001: unresolved external symbol "int __stdcall
OpenGLMakeCurrent(struct HDC__ *,struct HGLRC__ *)"
(?OpenGLMakeCurrent@@YGHPAUHDC__@@PAUHGLRC__@@@Z)
main.obj : error LNK2001: unresolved external symbol "struct HGLRC__ *
__stdcall OpenGLCreateContext(struct HDC__ *)"
(?OpenGLCreateContext@@YGPAUHGLRC__@@PAUHDC__@@@Z)
main.obj : error LNK2001: unresolved external symbol "void __cdecl
OpenGLUnInit(void)" (?OpenGLUnInit@@YAXXZ)
main.obj : error LNK2001: unresolved external symbol "int __cdecl
OpenGLInit(char *)" (?OpenGLInit@@YAHPAD@Z)
main.obj : error LNK2001: unresolved external symbol "void __cdecl
OpenGLFindDriver(char *)" (?OpenGLFindDriver@@YAXPAD@Z)
OpenGLSetPixelFormat(struct HDC__ *,int,struct tagPIXELFORMATDESCRIPTOR
const *)"
(?OpenGLSetPixelFormat@@YGHPAUHDC__@@HPBUtagPIXELFORMATDESCRIPTOR@@@Z)
main.obj : error LNK2001: unresolved external symbol "int __stdcall
OpenGLChoosePixelFormat(struct HDC__ *,struct tagPIXELFORMATDESCRIPTOR const
*)" (?OpenGLChoosePixelFormat@@YGHPAUHDC__@@PBUtagPIXELFORMATDESCRIPTOR@@@Z)
main.obj : error LNK2001: unresolved external symbol "int __stdcall
OpenGLSwapBuffers(struct HDC__ *)" (?OpenGLSwapBuffers@@YGHPAUHDC__@@@Z)
main.obj : error LNK2001: unresolved external symbol "int __stdcall
OpenGLDeleteContext(struct HGLRC__ *)"
(?OpenGLDeleteContext@@YGHPAUHGLRC__@@@Z)
main.obj : error LNK2001: unresolved external symbol "int __stdcall
OpenGLMakeCurrent(struct HDC__ *,struct HGLRC__ *)"
(?OpenGLMakeCurrent@@YGHPAUHDC__@@PAUHGLRC__@@@Z)
main.obj : error LNK2001: unresolved external symbol "struct HGLRC__ *
__stdcall OpenGLCreateContext(struct HDC__ *)"
(?OpenGLCreateContext@@YGPAUHGLRC__@@PAUHDC__@@@Z)
main.obj : error LNK2001: unresolved external symbol "void __cdecl
OpenGLUnInit(void)" (?OpenGLUnInit@@YAXXZ)
main.obj : error LNK2001: unresolved external symbol "int __cdecl
OpenGLInit(char *)" (?OpenGLInit@@YAHPAD@Z)
main.obj : error LNK2001: unresolved external symbol "void __cdecl
OpenGLFindDriver(char *)" (?OpenGLFindDriver@@YAXPAD@Z)
Heinzah, the reason why you can''t have a ICD for Voodoo 1/2 is NOT because it doesn''t support windowed rendering, but rather that the ICD mechanism doesn''t support the pass-through feature of these cards!
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement