123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261 |
- /*
- ===========================================================================
- Copyright (C) 1999-2005 Id Software, Inc.
- This file is part of Quake III Arena source code.
- Quake III Arena source code is free software; you can redistribute it
- and/or modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; either version 2 of the License,
- or (at your option) any later version.
- Quake III Arena source code is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with Foobar; if not, write to the Free Software
- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- ===========================================================================
- */
- //-----------------------------------------------------------------------------
- //
- // $LogFile$
- // $Revision: 1.7.2.3 $
- // $Author: ttimo $
- // $Date: 2000/02/16 15:43:14 $
- // $Log: igl.h,v $
- // Revision 1.7.2.3 2000/02/16 15:43:14 ttimo
- // Curry bug #101996: added glTexParameterf and glNormal3f
- //
- // Revision 1.7.2.2 2000/02/13 17:48:07 ttimo
- // Curry bug #101874 - added glTexGenf to GL interface
- //
- // Revision 1.7.2.1 2000/02/04 22:59:34 ttimo
- // messaging API preview
- //
- // Revision 1.7 2000/01/18 00:43:59 ttimo
- // RC
- //
- // Revision 1.6 2000/01/13 00:46:41 ttimo
- // Merged in patches in / out
- // Revision 1.1.1.4 2000/01/18 00:17:12 ttimo
- // merging in for RC
- //
- // Revision 1.5 2000/01/11 22:14:48 ttimo
- // cleaning up after merging and thinks badly fucked up
- //
- // Revision 1.2 2000/01/09 04:39:14 ttimo
- // added some bindings to the GL table
- //
- // Revision 1.1.1.3 2000/01/11 16:43:15 ttimo
- // merged version from old reposit and Robert update
- //
- // Revision 1.1.1.1 2000/01/07 17:17:30 ttimo
- // initial import of Q3Radiant module
- //
- // Revision 1.1.1.1 2000/01/07 17:17:30 ttimo
- // initial import of Q3Radiant module
- //
- // Revision 1.3 2000/01/17 23:53:44 TBesset
- // ready for merge in sourceforge (RC candidate)
- //
- // Revision 1.2 2000/01/07 16:40:13 TBesset
- // merged from BSP frontend
- //
- // Revision 1.1.1.3 1999/12/29 18:31:27 TBesset
- // Q3Radiant public version
- //
- // Revision 1.1.1.1.2.1 1999/12/29 21:39:45 TBesset
- // updated to update3 from Robert
- //
- // Revision 1.1.1.3 1999/12/29 18:31:27 TBesset
- // Q3Radiant public version
- // Revision 1.1.1.3 1999/12/29 18:31:27 TBesset
- // Q3Radiant public version
- //
- // Revision 1.2 1999/11/22 17:46:48 Timo & Christine
- // merged EARadiant into the main tree
- // bug fixes for Q3Plugin / EAPlugin
- // export for Robert
- //
- // Revision 1.1.2.2 1999/11/03 20:38:04 Timo & Christine
- // MEAN plugin for Q3Radiant, alpha version
- //
- // Revision 1.1.2.1.2.1 1999/10/27 08:34:29 Timo & Christine
- // preview version of the texture tools plugin is ready
- // ( TexTool.dll plugin is in Q3Plugin module )
- // plugins can draw in their own window using Radiant's qgl bindings
- //
- // Revision 1.1.2.1 1999/10/08 16:28:14 Timo & Christine
- // started plugin extensions for EA features support in Q3Radiant
- // MEAN files plugin, and Surface Properties plugin
- //
- //
- // DESCRIPTION:
- // all purpose OpenGL interface for Q3Radiant plugins
- //
- #ifndef __IGL_H__
- #define __IGL_H__
- // we use this class to let plugins draw inside the Radiant windows
- class IGLWindow
- {
- public:
- // Increment the number of references to this object
- virtual void IncRef () = 0;
- // Decrement the reference count
- virtual void DecRef () = 0;
- virtual void Draw( VIEWTYPE vt ) = 0;
- };
- // define a GUID for this interface so plugins can access and reference it
- // {0F237620-854B-11d3-8EF3-A2DFBD53251B}
- static const GUID QERQglTable_GUID =
- { 0xf237620, 0x854b, 0x11d3, { 0x8e, 0xf3, 0xa2, 0xdf, 0xbd, 0x53, 0x25, 0x1b } };
- #include <gl/gl.h>
- #include <gl/glu.h>
- typedef void (APIENTRY* PFN_QGLALPHAFUNC) (GLenum func, GLclampf ref);
- typedef void (APIENTRY* PFN_QGLBEGIN) (GLenum);
- typedef void (APIENTRY* PFN_QGLBINDTEXTURE) (GLenum target, GLuint texture);
- typedef void (APIENTRY* PFN_QGLBLENDFUNC) (GLenum sfactor, GLenum dfactor);
- typedef void (APIENTRY* PFN_QGLCALLLIST) (GLuint list);
- typedef void (APIENTRY* PFN_QGLCALLLISTS) (GLsizei n, GLenum type, const GLvoid *lists);
- typedef void (APIENTRY* PFN_QGLCLEAR) (GLbitfield mask);
- typedef void (APIENTRY* PFN_QGLCLEARCOLOR) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
- typedef void (APIENTRY* PFN_QGLCLEARDEPTH) (GLclampd depth);
- typedef void (APIENTRY* PFN_QGLCOLOR3F) (GLfloat red, GLfloat green, GLfloat blue);
- typedef void (APIENTRY* PFN_QGLCOLOR4F) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
- typedef void (APIENTRY* PFN_QGLCULLFACE) (GLenum mode);
- typedef void (APIENTRY* PFN_QGLDELETELISTS) (GLuint list, GLsizei range);
- typedef void (APIENTRY* PFN_QGLDISABLE) (GLenum cap);
- typedef void (APIENTRY* PFN_QGLENABLE) (GLenum cap);
- typedef void (APIENTRY* PFN_QGLEND) ();
- typedef void (APIENTRY* PFN_QGLENDLIST) (void);
- typedef GLuint (APIENTRY* PFN_QGLGENLISTS) (GLsizei range);
- typedef void (APIENTRY* PFN_QGLLISTBASE) (GLuint base);
- typedef void (APIENTRY* PFN_QGLLOADIDENTITY) ();
- typedef void (APIENTRY* PFN_QGLMATRIXMODE) (GLenum mode);
- typedef void (APIENTRY* PFN_QGLNEWLIST) (GLuint list, GLenum mode);
- typedef void (APIENTRY* PFN_QGLNORMAL3F) (GLfloat nx, GLfloat ny, GLfloat nz);
- typedef void (APIENTRY* PFN_QGLORTHO) (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
- typedef void (APIENTRY* PFN_QGLPOINTSIZE) (GLfloat size);
- typedef void (APIENTRY* PFN_QGLPOLYGONMODE) (GLenum face, GLenum mode);
- typedef void (APIENTRY* PFN_QGLPOPMATRIX) ();
- typedef void (APIENTRY* PFN_QGLPUSHMATRIX) ();
- typedef void (APIENTRY* PFN_QGLROTATED) (GLdouble angle, GLdouble x, GLdouble y, GLdouble z);
- typedef void (APIENTRY* PFN_QGLROTATEF) (GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
- typedef void (APIENTRY* PFN_QGLSCALEF) (GLfloat x, GLfloat y, GLfloat z);
- typedef void (APIENTRY* PFN_QGLTEXCOORD2F) (GLfloat s, GLfloat t);
- typedef void (APIENTRY* PFN_QGLTEXENVF) (GLenum target, GLenum pname, GLfloat param);
- typedef void (APIENTRY* PFN_QGLTEXGENF) (GLenum coord, GLenum pname, GLfloat param);
- typedef void (APIENTRY* PFN_QGLTEXPARAMETERF) (GLenum target, GLenum pname, GLfloat param);
- typedef void (APIENTRY* PFN_QGLTRANSLATED) (GLdouble x, GLdouble y, GLdouble z);
- typedef void (APIENTRY* PFN_QGLTRANSLATEF) (GLfloat x, GLfloat y, GLfloat z);
- typedef void (APIENTRY* PFN_QGLVERTEX2F) (GLfloat x, GLfloat y);
- typedef void (APIENTRY* PFN_QGLVERTEX3F) (GLfloat x, GLfloat y, GLfloat z);
- typedef void (APIENTRY* PFN_QGLVIEWPORT) (GLint x, GLint y, GLsizei width, GLsizei height);
- typedef void (WINAPI* PFN_QE_CHECKOPENGLFORERRORS) ();
- typedef int (WINAPI* PFN_QEW_SETUPPIXELFORMAT) (HDC hDC, qboolean zbuffer );
- typedef HGLRC (WINAPI* PFN_QWGL_CREATECONTEXT) (HDC);
- typedef BOOL (WINAPI* PFN_QWGL_DELETECONTEXT) (HGLRC);
- typedef BOOL (WINAPI* PFN_QWGL_MAKECURRENT) (HDC, HGLRC);
- typedef BOOL (WINAPI* PFN_QWGL_SHARELISTS) (HGLRC, HGLRC);
- typedef BOOL (WINAPI* PFN_QWGL_SWAPBUFFERS) (HDC);
- typedef BOOL (WINAPI* PFN_QWGL_USEFONTBITMAPS) (HDC, DWORD, DWORD, DWORD);
- // glu stuff
- typedef void (APIENTRY * PFN_QGLUPERSPECTIVE) (GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar);
- typedef void (APIENTRY * PFN_QGLULOOKAT)(
- GLdouble eyex,
- GLdouble eyey,
- GLdouble eyez,
- GLdouble centerx,
- GLdouble centery,
- GLdouble centerz,
- GLdouble upx,
- GLdouble upy,
- GLdouble upz);
- // specially provided by the editor for plugins
- typedef HGLRC (WINAPI* PFN_QERAPP_GETQEGLOBALSHGLRC) ();
- // plugins drawing inside the GL windows
- //++timo TODO: add hooking into other windows
- //+timo NOTE: this could be moved to the messaging system instead of having a dedicated interface
- typedef void (WINAPI* PFN_QERAPP_HOOKXYGLWINDOW) (IGLWindow *);
- typedef void (WINAPI* PFN_QERAPP_UNHOOKGLWINDOW) (IGLWindow *);
- struct _QERQglTable
- {
- //++timo do we really wanna play with versions ?
- // float m_fVersion;
- int m_nSize;
- PFN_QGLALPHAFUNC m_pfn_qglAlphaFunc;
- PFN_QGLBEGIN m_pfn_qglBegin;
- PFN_QGLBINDTEXTURE m_pfn_qglBindTexture;
- PFN_QGLBLENDFUNC m_pfn_qglBlendFunc;
- PFN_QGLCALLLIST m_pfn_qglCallList;
- PFN_QGLCLEAR m_pfn_qglClear;
- PFN_QGLCLEARCOLOR m_pfn_qglClearColor;
- PFN_QGLCALLLISTS m_pfn_qglCallLists;
- PFN_QGLCLEARDEPTH m_pfn_qglClearDepth;
- PFN_QGLCOLOR3F m_pfn_qglColor3f;
- PFN_QGLCOLOR4F m_pfn_qglColor4f;
- PFN_QGLCULLFACE m_pfn_qglCullFace;
- PFN_QGLDELETELISTS m_pfn_qglDeleteLists;
- PFN_QGLDISABLE m_pfn_qglDisable;
- PFN_QGLENABLE m_pfn_qglEnable;
- PFN_QGLEND m_pfn_qglEnd;
- PFN_QGLENDLIST m_pfn_qglEndList;
- PFN_QGLGENLISTS m_pfn_qglGenLists;
- PFN_QGLLISTBASE m_pfn_qglListBase;
- PFN_QGLLOADIDENTITY m_pfn_qglLoadIdentity;
- PFN_QGLMATRIXMODE m_pfn_qglMatrixMode;
- PFN_QGLNEWLIST m_pfn_qglNewList;
- PFN_QGLNORMAL3F m_pfn_qglNormal3f;
- PFN_QGLORTHO m_pfn_qglOrtho;
- PFN_QGLPOINTSIZE m_pfn_qglPointSize;
- PFN_QGLPOLYGONMODE m_pfn_qglPolygonMode;
- PFN_QGLPOPMATRIX m_pfn_qglPopMatrix;
- PFN_QGLPUSHMATRIX m_pfn_qglPushMatrix;
- PFN_QGLROTATED m_pfn_qglRotated;
- PFN_QGLROTATEF m_pfn_qglRotatef;
- PFN_QGLSCALEF m_pfn_qglScalef;
- PFN_QGLTEXCOORD2F m_pfn_qglTexCoord2f;
- PFN_QGLTEXENVF m_pfn_qglTexEnvf;
- PFN_QGLTEXGENF m_pfn_qglTexGenf;
- PFN_QGLTEXPARAMETERF m_pfn_qglTexParameterf;
- PFN_QGLTRANSLATED m_pfn_qglTranslated;
- PFN_QGLTRANSLATEF m_pfn_qglTranslatef;
- PFN_QGLVERTEX2F m_pfn_qglVertex2f;
- PFN_QGLVERTEX3F m_pfn_qglVertex3f;
- PFN_QGLVIEWPORT m_pfn_qglViewport;
- PFN_QE_CHECKOPENGLFORERRORS m_pfn_QE_CheckOpenGLForErrors;
- PFN_QEW_SETUPPIXELFORMAT m_pfn_QEW_SetupPixelFormat;
- PFN_QWGL_CREATECONTEXT m_pfn_qwglCreateContext;
- PFN_QWGL_DELETECONTEXT m_pfn_qwglDeleteContext;
- PFN_QWGL_MAKECURRENT m_pfn_qwglMakeCurrent;
- PFN_QWGL_SHARELISTS m_pfn_qwglShareLists;
- PFN_QWGL_SWAPBUFFERS m_pfn_qwglSwapBuffers;
- PFN_QWGL_USEFONTBITMAPS m_pfn_qwglUseFontBitmaps;
- PFN_QERAPP_GETQEGLOBALSHGLRC m_pfnGetQeglobalsHGLRC;
- // glu stuff
- PFN_QGLUPERSPECTIVE m_pfn_qgluPerspective;
- PFN_QGLULOOKAT m_pfn_qgluLookAt;
- // plugin entities drawing inside Radiant windows
- PFN_QERAPP_HOOKXYGLWINDOW m_pfnHookXYGLWindow;
- PFN_QERAPP_UNHOOKGLWINDOW m_pfnUnHookGLWindow;
- };
- #endif
|