144 lines
3.4 KiB
C++
144 lines
3.4 KiB
C++
/******************************Module*Header*******************************\
|
|
* Module Name: glutil.cxx
|
|
*
|
|
* Misc. utility functions
|
|
*
|
|
* Copyright (c) 1996 Microsoft Corporation
|
|
*
|
|
\**************************************************************************/
|
|
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
#include <stdlib.h>
|
|
#include <windows.h>
|
|
#include <GL/gl.h>
|
|
#include <sys/types.h>
|
|
#include <math.h>
|
|
|
|
#include "mtk.h"
|
|
#include "glutil.hxx"
|
|
|
|
MTK_OS_INFO gOSInfo;
|
|
MTK_GL_CAPS gGLCaps; // this should be per context, eventually
|
|
|
|
void (__stdcall *glAddSwapHintRect)(GLint, GLint, GLint, GLint);
|
|
|
|
/******************************Public*Routine******************************\
|
|
* ss_fOnGL11
|
|
*
|
|
* True if running on OpenGL v.1.1x
|
|
*
|
|
\**************************************************************************/
|
|
|
|
BOOL
|
|
mtk_fOnGL11( void )
|
|
{
|
|
return gGLCaps.bGLv1_1;
|
|
}
|
|
|
|
/******************************Public*Routine******************************\
|
|
* ss_fOnNT35
|
|
*
|
|
* True if running on NT version 3.51 or less
|
|
*
|
|
\**************************************************************************/
|
|
|
|
BOOL
|
|
mtk_fOnNT35( void )
|
|
{
|
|
return gOSInfo.fOnNT35;
|
|
}
|
|
|
|
/******************************Public*Routine******************************\
|
|
* ss_fOnWin95
|
|
*
|
|
* True if running on Windows 95
|
|
*
|
|
\**************************************************************************/
|
|
|
|
BOOL
|
|
mtk_fOnWin95( void )
|
|
{
|
|
return gOSInfo.fOnWin95;
|
|
}
|
|
|
|
/******************************Public*Routine******************************\
|
|
* MyAddSwapHintRect
|
|
*
|
|
\**************************************************************************/
|
|
|
|
static void _stdcall
|
|
MyAddSwapHintRect(GLint xs, GLint ys, GLint xe, GLint ye)
|
|
{
|
|
return;
|
|
}
|
|
|
|
/******************************Public*Routine******************************\
|
|
* QueryAddSwapHintRectWIN
|
|
*
|
|
\**************************************************************************/
|
|
|
|
//mf: again, per context problem
|
|
BOOL
|
|
mtk_QueryAddSwapHintRect()
|
|
{
|
|
glAddSwapHintRect = (PFNGLADDSWAPHINTRECTWINPROC)
|
|
wglGetProcAddress("glAddSwapHintRectWIN");
|
|
if (glAddSwapHintRect == NULL) {
|
|
glAddSwapHintRect = MyAddSwapHintRect;
|
|
return FALSE;
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
/******************************Public*Routine******************************\
|
|
* mtk_bAddSwapHintRect()
|
|
*
|
|
\**************************************************************************/
|
|
|
|
BOOL
|
|
mtk_bAddSwapHintRect()
|
|
{
|
|
return gGLCaps.bAddSwapHintRect;
|
|
}
|
|
|
|
/******************************Public*Routine******************************\
|
|
\**************************************************************************/
|
|
|
|
MTK_OS_INFO::MTK_OS_INFO()
|
|
{
|
|
osvi.dwOSVersionInfoSize = sizeof(osvi);
|
|
GetVersionEx(&osvi);
|
|
|
|
fOnWin95 = (osvi.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS);
|
|
fOnNT35 =
|
|
(
|
|
(osvi.dwPlatformId == VER_PLATFORM_WIN32_NT) &&
|
|
(osvi.dwMajorVersion == 3 && osvi.dwMinorVersion <= 51)
|
|
);
|
|
}
|
|
|
|
/******************************Public*Routine******************************\
|
|
\**************************************************************************/
|
|
|
|
MTK_GL_CAPS::MTK_GL_CAPS()
|
|
{
|
|
bGLv1_1 = FALSE;
|
|
bTextureObjects = FALSE;
|
|
bAddSwapHintRect = FALSE;
|
|
bPalettedTexture = FALSE;
|
|
}
|
|
|
|
void
|
|
MTK_GL_CAPS::Query()
|
|
{
|
|
bGLv1_1 = (BOOL) strstr( (char *) glGetString(GL_VERSION), "1.1" );
|
|
if( bGLv1_1 )
|
|
bTextureObjects = TRUE;
|
|
if( !bTextureObjects )
|
|
SS_DBGINFO( "MTK_GL_CAPS: Texture Objects disabled\n" );
|
|
bAddSwapHintRect = mtk_QueryAddSwapHintRect();
|
|
bPalettedTexture = mtk_QueryPalettedTextureEXT();
|
|
}
|