mirror of
https://github.com/ioquake/jedi-academy.git
synced 2024-11-22 04:11:57 +00:00
Merge pull request #6 from jonathangray/sdl
add SDL glimp/input from ioquake3
This commit is contained in:
commit
908d2f0880
28 changed files with 5520 additions and 39 deletions
|
@ -25,8 +25,6 @@ copy *.so to your base directory
|
|||
|
||||
Known issues:
|
||||
|
||||
When running windowed the mouse does not work in the menus.
|
||||
|
||||
Save games do not yet work on amd64.
|
||||
|
||||
The demo has various issues and does not work properly.
|
||||
|
|
|
@ -33,12 +33,14 @@ add_definitions( -D_IMMERSION_DISABLE )
|
|||
add_definitions( -DNDEBUG )
|
||||
add_definitions( -DFINAL_BUILD )
|
||||
|
||||
include_directories(/usr/X11R6/include/)
|
||||
link_directories(/usr/X11R6/lib)
|
||||
find_package (SDL REQUIRED)
|
||||
include_directories(${SDL_INCLUDE_DIR})
|
||||
|
||||
include_directories(/usr/local/include/)
|
||||
link_directories(/usr/local/lib)
|
||||
find_package(OpenGL REQUIRED)
|
||||
include_directories(${OPENGL_INCLUDE_DIR})
|
||||
|
||||
find_package(OpenAL REQUIRED)
|
||||
include_directories(${OPENAL_INCLUDE_DIR})
|
||||
|
||||
set(src_main_rmg
|
||||
RMG/RM_Area.cpp
|
||||
|
@ -272,11 +274,16 @@ set(src_main_zlib
|
|||
set(src_main_unix
|
||||
unix/unix_main.cpp
|
||||
unix/unix_shared.cpp
|
||||
unix/linux_glimp.cpp
|
||||
unix/linux_qgl.cpp
|
||||
unix/unix_glimp_common.cpp
|
||||
null/null_snddma.cpp
|
||||
)
|
||||
|
||||
set(src_sdl
|
||||
sdl/sdl_gamma.cpp
|
||||
sdl/sdl_glimp.cpp
|
||||
sdl/sdl_input.cpp
|
||||
)
|
||||
|
||||
set(src_starwars
|
||||
${src_main_rmg}
|
||||
${src_main_client}
|
||||
|
@ -292,6 +299,7 @@ set(src_starwars
|
|||
${src_main_ui}
|
||||
${src_main_zlib}
|
||||
${src_main_unix}
|
||||
${src_sdl}
|
||||
)
|
||||
|
||||
add_executable(jasp
|
||||
|
@ -302,8 +310,9 @@ set_target_properties(jasp PROPERTIES COMPILE_DEFINITIONS "_JK2EXE;_FF_DISABLE")
|
|||
|
||||
target_link_libraries(jasp
|
||||
m pthread
|
||||
X11 Xxf86vm Xxf86dga
|
||||
openal
|
||||
${SDL_LIBRARY}
|
||||
${OPENGL_gl_LIBRARY}
|
||||
${OPENAL_LIBRARY}
|
||||
)
|
||||
|
||||
if (CMAKE_SYSTEM_NAME MATCHES "Linux")
|
||||
|
|
|
@ -79,6 +79,8 @@ cvar_t *cl_ingameVideo;
|
|||
|
||||
cvar_t *cl_thumbStickMode;
|
||||
|
||||
cvar_t *cl_consoleKeys;
|
||||
|
||||
clientActive_t cl;
|
||||
clientConnection_t clc;
|
||||
clientStatic_t cls;
|
||||
|
@ -1265,6 +1267,9 @@ void CL_Init( void ) {
|
|||
|
||||
cl_updateInfoString = Cvar_Get( "cl_updateInfoString", "", CVAR_ROM );
|
||||
|
||||
// ~ and `, as keys and characters
|
||||
cl_consoleKeys = Cvar_Get( "cl_consoleKeys", "~ ` 0x7e 0x60", CVAR_ARCHIVE);
|
||||
|
||||
// userinfo
|
||||
Cvar_Get ("name", "Jaden", CVAR_USERINFO | CVAR_ARCHIVE );
|
||||
Cvar_Get ("snaps", "20", CVAR_USERINFO | CVAR_ARCHIVE );
|
||||
|
|
|
@ -305,6 +305,8 @@ extern cvar_t *cl_activeAction;
|
|||
|
||||
extern cvar_t *cl_thumbStickMode;
|
||||
|
||||
extern cvar_t *cl_consoleKeys;
|
||||
|
||||
//=================================================
|
||||
|
||||
//
|
||||
|
@ -352,6 +354,7 @@ void CL_WritePacket( void );
|
|||
void IN_CenterView (void);
|
||||
|
||||
float CL_KeyState (kbutton_t *key);
|
||||
int Key_StringToKeynum( char *str );
|
||||
const char *Key_KeynumToString( int keynum/*, qboolean bTranslate*/ ); //note: translate is only called for menu display not configs
|
||||
|
||||
//
|
||||
|
@ -458,6 +461,7 @@ void CL_FirstSnapshot( void );
|
|||
//
|
||||
void CL_InitUI( void );
|
||||
void CL_ShutdownUI( void );
|
||||
int Key_GetCatcher( void );
|
||||
void CL_GenericMenu_f(void);
|
||||
void CL_DataPad_f(void);
|
||||
void CL_EndScreenDissolve_f(void);
|
||||
|
|
|
@ -585,6 +585,44 @@ void Parse3DMatrix ( const char **buf_p, int z, int y, int x, float *m) {
|
|||
COM_MatchToken( buf_p, ")" );
|
||||
}
|
||||
|
||||
/*
|
||||
===================
|
||||
Com_HexStrToInt
|
||||
===================
|
||||
*/
|
||||
int Com_HexStrToInt( const char *str )
|
||||
{
|
||||
if ( !str || !str[ 0 ] )
|
||||
return -1;
|
||||
|
||||
// check for hex code
|
||||
if( str[ 0 ] == '0' && str[ 1 ] == 'x' )
|
||||
{
|
||||
int i, n = 0;
|
||||
|
||||
for( i = 2; i < strlen( str ); i++ )
|
||||
{
|
||||
char digit;
|
||||
|
||||
n *= 16;
|
||||
|
||||
digit = tolower( str[ i ] );
|
||||
|
||||
if( digit >= '0' && digit <= '9' )
|
||||
digit -= '0';
|
||||
else if( digit >= 'a' && digit <= 'f' )
|
||||
digit = digit - 'a' + 10;
|
||||
else
|
||||
return -1;
|
||||
|
||||
n += digit;
|
||||
}
|
||||
|
||||
return n;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
/*
|
||||
============================================================================
|
||||
|
|
|
@ -226,6 +226,8 @@ typedef int clipHandle_t;
|
|||
#define MAX_QINT 0x7fffffff
|
||||
#define MIN_QINT (-MAX_QINT-1)
|
||||
|
||||
#define ARRAY_LEN(x) (sizeof(x) / sizeof(*(x)))
|
||||
#define STRARRAY_LEN(x) (ARRAY_LEN(x) - 1)
|
||||
|
||||
// angle indexes
|
||||
#define PITCH 0 // up / down
|
||||
|
@ -1207,6 +1209,7 @@ void SkipRestOfLine ( const char **data );
|
|||
void Parse1DMatrix (const char **buf_p, int x, float *m);
|
||||
void Parse2DMatrix (const char **buf_p, int y, int x, float *m);
|
||||
void Parse3DMatrix (const char **buf_p, int z, int y, int x, float *m);
|
||||
int Com_HexStrToInt( const char *str );
|
||||
|
||||
void QDECL Com_sprintf (char *dest, int size, const char *fmt, ...);
|
||||
|
||||
|
|
|
@ -5,7 +5,17 @@
|
|||
#ifndef __QGL_H__
|
||||
#define __QGL_H__
|
||||
|
||||
#if defined( __LINT__ )
|
||||
#ifndef DYNAMIC_LINK_GL
|
||||
|
||||
#ifdef USE_LOCAL_HEADERS
|
||||
# include "SDL_opengl.h"
|
||||
#else
|
||||
# include <SDL_opengl.h>
|
||||
#endif
|
||||
|
||||
#include "qgl_linked.h"
|
||||
|
||||
#elif defined( __LINT__ )
|
||||
|
||||
#include <GL/gl.h>
|
||||
|
||||
|
@ -29,7 +39,7 @@
|
|||
#include <GL/gl.h>
|
||||
#include <GL/glx.h>
|
||||
|
||||
#endif
|
||||
#endif // !DYNAMIC_LINK_GL
|
||||
|
||||
#ifndef APIENTRY
|
||||
#define APIENTRY
|
||||
|
@ -328,6 +338,8 @@ extern void ( APIENTRY * qglPointParameterfvEXT)( GLenum, GLfloat *);
|
|||
extern void ( APIENTRY * qglPointParameteriNV)( GLenum, GLint);
|
||||
extern void ( APIENTRY * qglPointParameterivNV)( GLenum, const GLint *);
|
||||
|
||||
#ifdef DYNAMIC_LINK_GL
|
||||
|
||||
//===========================================================================
|
||||
|
||||
// windows systems use a function pointer for each call so we can load minidrivers
|
||||
|
@ -708,4 +720,5 @@ extern void (*qglXSwapBuffers)( Display *dpy, GLXDrawable drawable );
|
|||
|
||||
#endif // _WIN32
|
||||
|
||||
#endif
|
||||
#endif // DYNAMIC_LINK_GL
|
||||
#endif // __QGL_H__
|
||||
|
|
|
@ -1144,11 +1144,7 @@ void R_Register( void )
|
|||
r_texturebitslm = Cvar_Get( "r_texturebitslm", "0", CVAR_ARCHIVE | CVAR_LATCH );
|
||||
r_colorbits = Cvar_Get( "r_colorbits", "0", CVAR_ARCHIVE | CVAR_LATCH );
|
||||
r_stereo = Cvar_Get( "r_stereo", "0", CVAR_ARCHIVE | CVAR_LATCH );
|
||||
#ifdef __linux__
|
||||
r_stencilbits = Cvar_Get( "r_stencilbits", "0", CVAR_ARCHIVE | CVAR_LATCH );
|
||||
#else
|
||||
r_stencilbits = Cvar_Get( "r_stencilbits", "8", CVAR_ARCHIVE | CVAR_LATCH );
|
||||
#endif
|
||||
r_depthbits = Cvar_Get( "r_depthbits", "0", CVAR_ARCHIVE | CVAR_LATCH );
|
||||
r_overBrightBits = Cvar_Get ("r_overBrightBits", "0", CVAR_ARCHIVE | CVAR_LATCH );
|
||||
r_ignorehwgamma = Cvar_Get( "r_ignorehwgamma", "0", CVAR_ARCHIVE | CVAR_LATCH);
|
||||
|
|
92
code/sdl/sdl_gamma.cpp
Normal file
92
code/sdl/sdl_gamma.cpp
Normal file
|
@ -0,0 +1,92 @@
|
|||
/*
|
||||
===========================================================================
|
||||
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 Quake III Arena source code; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#ifdef USE_LOCAL_HEADERS
|
||||
# include "SDL.h"
|
||||
#else
|
||||
# include <SDL.h>
|
||||
#endif
|
||||
|
||||
#include "../game/q_shared.h"
|
||||
#include "../renderer/tr_local.h"
|
||||
#include "../qcommon/qcommon.h"
|
||||
|
||||
/*
|
||||
=================
|
||||
GLimp_SetGamma
|
||||
=================
|
||||
*/
|
||||
void GLimp_SetGamma( unsigned char red[256], unsigned char green[256], unsigned char blue[256] )
|
||||
{
|
||||
Uint16 table[3][256];
|
||||
int i, j;
|
||||
|
||||
if( !glConfig.deviceSupportsGamma || r_ignorehwgamma->integer > 0 )
|
||||
return;
|
||||
|
||||
for (i = 0; i < 256; i++)
|
||||
{
|
||||
table[0][i] = ( ( ( Uint16 ) red[i] ) << 8 ) | red[i];
|
||||
table[1][i] = ( ( ( Uint16 ) green[i] ) << 8 ) | green[i];
|
||||
table[2][i] = ( ( ( Uint16 ) blue[i] ) << 8 ) | blue[i];
|
||||
}
|
||||
|
||||
#ifdef _WIN32
|
||||
#include <windows.h>
|
||||
|
||||
// Win2K and newer put this odd restriction on gamma ramps...
|
||||
{
|
||||
OSVERSIONINFO vinfo;
|
||||
|
||||
vinfo.dwOSVersionInfoSize = sizeof( vinfo );
|
||||
GetVersionEx( &vinfo );
|
||||
if( vinfo.dwMajorVersion >= 5 && vinfo.dwPlatformId == VER_PLATFORM_WIN32_NT )
|
||||
{
|
||||
ri.Printf( PRINT_DEVELOPER, "performing gamma clamp.\n" );
|
||||
for( j = 0 ; j < 3 ; j++ )
|
||||
{
|
||||
for( i = 0 ; i < 128 ; i++ )
|
||||
{
|
||||
if( table[ j ] [ i] > ( ( 128 + i ) << 8 ) )
|
||||
table[ j ][ i ] = ( 128 + i ) << 8;
|
||||
}
|
||||
|
||||
if( table[ j ] [127 ] > 254 << 8 )
|
||||
table[ j ][ 127 ] = 254 << 8;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
// enforce constantly increasing
|
||||
for (j = 0; j < 3; j++)
|
||||
{
|
||||
for (i = 1; i < 256; i++)
|
||||
{
|
||||
if (table[j][i] < table[j][i-1])
|
||||
table[j][i] = table[j][i-1];
|
||||
}
|
||||
}
|
||||
|
||||
SDL_SetGammaRamp(table[0], table[1], table[2]);
|
||||
}
|
||||
|
1225
code/sdl/sdl_glimp.cpp
Normal file
1225
code/sdl/sdl_glimp.cpp
Normal file
File diff suppressed because it is too large
Load diff
1107
code/sdl/sdl_input.cpp
Normal file
1107
code/sdl/sdl_input.cpp
Normal file
File diff suppressed because it is too large
Load diff
11
code/sdl/sdl_local.h
Normal file
11
code/sdl/sdl_local.h
Normal file
|
@ -0,0 +1,11 @@
|
|||
#include "../game/q_shared.h"
|
||||
#include "../qcommon/qcommon.h"
|
||||
#include "../client/client.h"
|
||||
|
||||
void IN_Init( void );
|
||||
void IN_Shutdown( void );
|
||||
void IN_Restart( void );
|
||||
|
||||
void Sys_GLimpSafeInit( void );
|
||||
void Sys_GLimpInit( void );
|
||||
void Sys_QueEvent( int time, sysEventType_t type, int value, int value2, int ptrLength, void *ptr );
|
82
code/unix/unix_glimp_common.cpp
Normal file
82
code/unix/unix_glimp_common.cpp
Normal file
|
@ -0,0 +1,82 @@
|
|||
#include <pthread.h>
|
||||
#include <semaphore.h>
|
||||
#include "../game/q_shared.h"
|
||||
|
||||
/*
|
||||
===========================================================
|
||||
|
||||
SMP acceleration
|
||||
|
||||
===========================================================
|
||||
*/
|
||||
|
||||
sem_t renderCommandsEvent;
|
||||
sem_t renderCompletedEvent;
|
||||
sem_t renderActiveEvent;
|
||||
|
||||
void (*glimpRenderThread)( void );
|
||||
|
||||
void *GLimp_RenderThreadWrapper( void *stub ) {
|
||||
glimpRenderThread();
|
||||
}
|
||||
|
||||
/*
|
||||
=======================
|
||||
GLimp_SpawnRenderThread
|
||||
=======================
|
||||
*/
|
||||
pthread_t renderThreadHandle;
|
||||
qboolean GLimp_SpawnRenderThread( void (*function)( void ) ) {
|
||||
|
||||
sem_init( &renderCommandsEvent, 0, 0 );
|
||||
sem_init( &renderCompletedEvent, 0, 0 );
|
||||
sem_init( &renderActiveEvent, 0, 0 );
|
||||
|
||||
glimpRenderThread = function;
|
||||
|
||||
if (pthread_create( &renderThreadHandle, NULL,
|
||||
GLimp_RenderThreadWrapper, NULL)) {
|
||||
return qfalse;
|
||||
}
|
||||
|
||||
return qtrue;
|
||||
}
|
||||
|
||||
static void *smpData;
|
||||
|
||||
void *GLimp_RendererSleep( void ) {
|
||||
void *data;
|
||||
|
||||
// after this, the front end can exit GLimp_FrontEndSleep
|
||||
sem_post ( &renderCompletedEvent );
|
||||
|
||||
sem_wait ( &renderCommandsEvent );
|
||||
|
||||
data = smpData;
|
||||
|
||||
// after this, the main thread can exit GLimp_WakeRenderer
|
||||
sem_post ( &renderActiveEvent );
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
void GLimp_FrontEndSleep( void ) {
|
||||
sem_wait ( &renderCompletedEvent );
|
||||
}
|
||||
|
||||
void GLimp_WakeRenderer( void *data ) {
|
||||
smpData = data;
|
||||
|
||||
// after this, the renderer can continue through GLimp_RendererSleep
|
||||
sem_post( &renderCommandsEvent );
|
||||
|
||||
sem_wait( &renderActiveEvent );
|
||||
}
|
||||
|
||||
void Sys_GLimpInit( void )
|
||||
{
|
||||
}
|
||||
|
||||
void Sys_GLimpSafeInit( void )
|
||||
{
|
||||
}
|
|
@ -144,7 +144,7 @@ void Sys_Init(void)
|
|||
Cvar_Set( "arch", "unknown" );
|
||||
#endif
|
||||
|
||||
IN_Init();
|
||||
// IN_Init();
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -47,11 +47,14 @@ add_definitions( -DFINAL_BUILD )
|
|||
add_definitions( -D_JK2 )
|
||||
add_definitions( -D_JK2MP )
|
||||
|
||||
include_directories(/usr/X11R6/include/)
|
||||
link_directories(/usr/X11R6/lib)
|
||||
find_package (SDL REQUIRED)
|
||||
include_directories(${SDL_INCLUDE_DIR})
|
||||
|
||||
include_directories(/usr/local/include/)
|
||||
link_directories(/usr/local/lib)
|
||||
find_package(OpenGL REQUIRED)
|
||||
include_directories(${OPENGL_INCLUDE_DIR})
|
||||
|
||||
find_package(OpenAL REQUIRED)
|
||||
include_directories(${OPENAL_INCLUDE_DIR})
|
||||
|
||||
set(src_main_rmg
|
||||
RMG/RM_Area.cpp
|
||||
|
@ -304,11 +307,16 @@ set(src_unix_common
|
|||
|
||||
set(src_main_unix
|
||||
${src_unix_common}
|
||||
unix/linux_glimp.cpp
|
||||
unix/linux_qgl.cpp
|
||||
unix/unix_glimp_common.cpp
|
||||
null/null_snddma.cpp
|
||||
)
|
||||
|
||||
set(src_sdl
|
||||
sdl/sdl_gamma.cpp
|
||||
sdl/sdl_glimp.cpp
|
||||
sdl/sdl_input.cpp
|
||||
)
|
||||
|
||||
set(src_botlib
|
||||
botlib/be_aas_bspq3.cpp
|
||||
botlib/be_aas_cluster.cpp
|
||||
|
@ -354,6 +362,7 @@ set(src_jk2mp
|
|||
${src_main_zlib}
|
||||
${src_botlib}
|
||||
${src_main_unix}
|
||||
${src_sdl}
|
||||
)
|
||||
|
||||
add_executable(jamp
|
||||
|
@ -364,8 +373,9 @@ set_target_properties(jamp PROPERTIES COMPILE_DEFINITIONS "_JK2EXE;_FF_DISABLE;B
|
|||
|
||||
target_link_libraries(jamp
|
||||
m pthread
|
||||
X11 Xxf86vm Xxf86dga
|
||||
openal
|
||||
${SDL_LIBRARY}
|
||||
${OPENGL_gl_LIBRARY}
|
||||
${OPENAL_LIBRARY}
|
||||
)
|
||||
|
||||
if (CMAKE_SYSTEM_NAME MATCHES "Linux")
|
||||
|
|
|
@ -102,6 +102,8 @@ char cl_cdkey[34] = " ";
|
|||
#endif // USE_CD_KEY
|
||||
|
||||
|
||||
cvar_t *cl_consoleKeys;
|
||||
|
||||
clientActive_t cl;
|
||||
clientConnection_t clc;
|
||||
clientStatic_t cls;
|
||||
|
@ -2631,6 +2633,9 @@ void CL_Init( void ) {
|
|||
Cvar_Get( "cl_maxPing", "800", CVAR_ARCHIVE );
|
||||
|
||||
|
||||
// ~ and `, as keys and characters
|
||||
cl_consoleKeys = Cvar_Get( "cl_consoleKeys", "~ ` 0x7e 0x60", CVAR_ARCHIVE);
|
||||
|
||||
// userinfo
|
||||
Cvar_Get ("name", "Padawan", CVAR_USERINFO | CVAR_ARCHIVE );
|
||||
Cvar_Get ("rate", "4000", CVAR_USERINFO | CVAR_ARCHIVE );
|
||||
|
|
|
@ -432,6 +432,8 @@ extern cvar_t *cl_allowAltEnter;
|
|||
extern cvar_t *cl_conXOffset;
|
||||
extern cvar_t *cl_inGameVideo;
|
||||
|
||||
extern cvar_t *cl_consoleKeys;
|
||||
|
||||
//=================================================
|
||||
|
||||
//
|
||||
|
@ -499,6 +501,7 @@ void IN_CenterView (void);
|
|||
void CL_VerifyCode( void );
|
||||
|
||||
float CL_KeyState (kbutton_t *key);
|
||||
int Key_StringToKeynum( char *str );
|
||||
const char *Key_KeynumToString( int keynum/*, qboolean bTranslate */ ); //note: translate is only called for menu display not configs
|
||||
|
||||
//
|
||||
|
|
|
@ -759,6 +759,44 @@ void Parse3DMatrix (const char **buf_p, int z, int y, int x, float *m) {
|
|||
COM_MatchToken( buf_p, ")" );
|
||||
}
|
||||
|
||||
/*
|
||||
===================
|
||||
Com_HexStrToInt
|
||||
===================
|
||||
*/
|
||||
int Com_HexStrToInt( const char *str )
|
||||
{
|
||||
if ( !str || !str[ 0 ] )
|
||||
return -1;
|
||||
|
||||
// check for hex code
|
||||
if( str[ 0 ] == '0' && str[ 1 ] == 'x' )
|
||||
{
|
||||
int i, n = 0;
|
||||
|
||||
for( i = 2; i < strlen( str ); i++ )
|
||||
{
|
||||
char digit;
|
||||
|
||||
n *= 16;
|
||||
|
||||
digit = tolower( str[ i ] );
|
||||
|
||||
if( digit >= '0' && digit <= '9' )
|
||||
digit -= '0';
|
||||
else if( digit >= 'a' && digit <= 'f' )
|
||||
digit = digit - 'a' + 10;
|
||||
else
|
||||
return -1;
|
||||
|
||||
n += digit;
|
||||
}
|
||||
|
||||
return n;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
/*
|
||||
============================================================================
|
||||
|
|
|
@ -410,6 +410,8 @@ typedef int clipHandle_t;
|
|||
#define MAX_QINT 0x7fffffff
|
||||
#define MIN_QINT (-MAX_QINT-1)
|
||||
|
||||
#define ARRAY_LEN(x) (sizeof(x) / sizeof(*(x)))
|
||||
#define STRARRAY_LEN(x) (ARRAY_LEN(x) - 1)
|
||||
|
||||
// angle indexes
|
||||
#define PITCH 0 // up / down
|
||||
|
@ -1718,6 +1720,7 @@ void SkipRestOfLine ( const char **data );
|
|||
void Parse1DMatrix (const char **buf_p, int x, float *m);
|
||||
void Parse2DMatrix (const char **buf_p, int y, int x, float *m);
|
||||
void Parse3DMatrix (const char **buf_p, int z, int y, int x, float *m);
|
||||
int Com_HexStrToInt( const char *str );
|
||||
|
||||
void QDECL Com_sprintf (char *dest, int size, const char *fmt, ...);
|
||||
|
||||
|
|
|
@ -5,7 +5,17 @@
|
|||
#ifndef __QGL_H__
|
||||
#define __QGL_H__
|
||||
|
||||
#if defined( __LINT__ )
|
||||
#ifndef DYNAMIC_LINK_GL
|
||||
|
||||
#ifdef USE_LOCAL_HEADERS
|
||||
# include "SDL_opengl.h"
|
||||
#else
|
||||
# include <SDL_opengl.h>
|
||||
#endif
|
||||
|
||||
#include "qgl_linked.h"
|
||||
|
||||
#elif defined( __LINT__ )
|
||||
|
||||
#include <GL/gl.h>
|
||||
|
||||
|
@ -33,7 +43,7 @@
|
|||
#include <GL/fxmesa.h>
|
||||
#endif
|
||||
|
||||
#endif
|
||||
#endif // !DYNAMIC_LINK_GL
|
||||
|
||||
#ifndef APIENTRY
|
||||
#define APIENTRY
|
||||
|
@ -338,6 +348,7 @@ extern void ( APIENTRY * qglTexImage3DEXT) (GLenum, GLint, GLenum, GLsizei, GLsi
|
|||
extern void ( APIENTRY * qglTexSubImage3DEXT) (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
|
||||
|
||||
//===========================================================================
|
||||
#ifdef DYNAMIC_LINK_GL
|
||||
|
||||
#if defined(MACOS_X)
|
||||
// This includes #ifdefs for optional logging and GL error checking after every GL call as well as #defines to prevent incorrect usage of the non-'qgl' versions of the GL API.
|
||||
|
@ -734,6 +745,7 @@ extern void (*qglXSwapBuffers)( Display *dpy, GLXDrawable drawable );
|
|||
|
||||
#endif // __linux__ || __FreeBSD__ // rb010123
|
||||
|
||||
#endif // _WIN32 && __linux__
|
||||
#endif // _MACOS_X
|
||||
|
||||
#endif
|
||||
#endif // DYNAMIC_LINK_GL
|
||||
#endif // __QGL_H__
|
||||
|
|
336
codemp/renderer/qgl_linked.h
Normal file
336
codemp/renderer/qgl_linked.h
Normal file
|
@ -0,0 +1,336 @@
|
|||
|
||||
#define qglAccum glAccum
|
||||
#define qglAlphaFunc glAlphaFunc
|
||||
#define qglAreTexturesResident glAreTexturesResident
|
||||
#define qglArrayElement glArrayElement
|
||||
#define qglBegin glBegin
|
||||
#define qglBindTexture glBindTexture
|
||||
#define qglBitmap glBitmap
|
||||
#define qglBlendFunc glBlendFunc
|
||||
#define qglCallList glCallList
|
||||
#define qglCallLists glCallLists
|
||||
#define qglClear glClear
|
||||
#define qglClearAccum glClearAccum
|
||||
#define qglClearColor glClearColor
|
||||
#define qglClearDepth glClearDepth
|
||||
#define qglClearIndex glClearIndex
|
||||
#define qglClearStencil glClearStencil
|
||||
#define qglClipPlane glClipPlane
|
||||
#define qglColor3b glColor3b
|
||||
#define qglColor3bv glColor3bv
|
||||
#define qglColor3d glColor3d
|
||||
#define qglColor3dv glColor3dv
|
||||
#define qglColor3f glColor3f
|
||||
#define qglColor3fv glColor3fv
|
||||
#define qglColor3i glColor3i
|
||||
#define qglColor3iv glColor3iv
|
||||
#define qglColor3s glColor3s
|
||||
#define qglColor3sv glColor3sv
|
||||
#define qglColor3ub glColor3ub
|
||||
#define qglColor3ubv glColor3ubv
|
||||
#define qglColor3ui glColor3ui
|
||||
#define qglColor3uiv glColor3uiv
|
||||
#define qglColor3us glColor3us
|
||||
#define qglColor3usv glColor3usv
|
||||
#define qglColor4b glColor4b
|
||||
#define qglColor4bv glColor4bv
|
||||
#define qglColor4d glColor4d
|
||||
#define qglColor4dv glColor4dv
|
||||
#define qglColor4f glColor4f
|
||||
#define qglColor4fv glColor4fv
|
||||
#define qglColor4i glColor4i
|
||||
#define qglColor4iv glColor4iv
|
||||
#define qglColor4s glColor4s
|
||||
#define qglColor4sv glColor4sv
|
||||
#define qglColor4ub glColor4ub
|
||||
#define qglColor4ubv glColor4ubv
|
||||
#define qglColor4ui glColor4ui
|
||||
#define qglColor4uiv glColor4uiv
|
||||
#define qglColor4us glColor4us
|
||||
#define qglColor4usv glColor4usv
|
||||
#define qglColorMask glColorMask
|
||||
#define qglColorMaterial glColorMaterial
|
||||
#define qglColorPointer glColorPointer
|
||||
#define qglCopyPixels glCopyPixels
|
||||
#define qglCopyTexImage1D glCopyTexImage1D
|
||||
#define qglCopyTexImage2D glCopyTexImage2D
|
||||
#define qglCopyTexSubImage1D glCopyTexSubImage1D
|
||||
#define qglCopyTexSubImage2D glCopyTexSubImage2D
|
||||
#define qglCullFace glCullFace
|
||||
#define qglDeleteLists glDeleteLists
|
||||
#define qglDeleteTextures glDeleteTextures
|
||||
#define qglDepthFunc glDepthFunc
|
||||
#define qglDepthMask glDepthMask
|
||||
#define qglDepthRange glDepthRange
|
||||
#define qglDisable glDisable
|
||||
#define qglDisableClientState glDisableClientState
|
||||
#define qglDrawArrays glDrawArrays
|
||||
#define qglDrawBuffer glDrawBuffer
|
||||
#define qglDrawElements glDrawElements
|
||||
#define qglDrawPixels glDrawPixels
|
||||
#define qglEdgeFlag glEdgeFlag
|
||||
#define qglEdgeFlagPointer glEdgeFlagPointer
|
||||
#define qglEdgeFlagv glEdgeFlagv
|
||||
#define qglEnable glEnable
|
||||
#define qglEnableClientState glEnableClientState
|
||||
#define qglEnd glEnd
|
||||
#define qglEndList glEndList
|
||||
#define qglEvalCoord1d glEvalCoord1d
|
||||
#define qglEvalCoord1dv glEvalCoord1dv
|
||||
#define qglEvalCoord1f glEvalCoord1f
|
||||
#define qglEvalCoord1fv glEvalCoord1fv
|
||||
#define qglEvalCoord2d glEvalCoord2d
|
||||
#define qglEvalCoord2dv glEvalCoord2dv
|
||||
#define qglEvalCoord2f glEvalCoord2f
|
||||
#define qglEvalCoord2fv glEvalCoord2fv
|
||||
#define qglEvalMesh1 glEvalMesh1
|
||||
#define qglEvalMesh2 glEvalMesh2
|
||||
#define qglEvalPoint1 glEvalPoint1
|
||||
#define qglEvalPoint2 glEvalPoint2
|
||||
#define qglFeedbackBuffer glFeedbackBuffer
|
||||
#define qglFinish glFinish
|
||||
#define qglFlush glFlush
|
||||
#define qglFogf glFogf
|
||||
#define qglFogfv glFogfv
|
||||
#define qglFogi glFogi
|
||||
#define qglFogiv glFogiv
|
||||
#define qglFrontFace glFrontFace
|
||||
#define qglFrustum glFrustum
|
||||
#define qglGenLists glGenLists
|
||||
#define qglGenTextures glGenTextures
|
||||
#define qglGetBooleanv glGetBooleanv
|
||||
#define qglGetClipPlane glGetClipPlane
|
||||
#define qglGetDoublev glGetDoublev
|
||||
#define qglGetError glGetError
|
||||
#define qglGetFloatv glGetFloatv
|
||||
#define qglGetIntegerv glGetIntegerv
|
||||
#define qglGetLightfv glGetLightfv
|
||||
#define qglGetLightiv glGetLightiv
|
||||
#define qglGetMapdv glGetMapdv
|
||||
#define qglGetMapfv glGetMapfv
|
||||
#define qglGetMapiv glGetMapiv
|
||||
#define qglGetMaterialfv glGetMaterialfv
|
||||
#define qglGetMaterialiv glGetMaterialiv
|
||||
#define qglGetPixelMapfv glGetPixelMapfv
|
||||
#define qglGetPixelMapuiv glGetPixelMapuiv
|
||||
#define qglGetPixelMapusv glGetPixelMapusv
|
||||
#define qglGetPointerv glGetPointerv
|
||||
#define qglGetPolygonStipple glGetPolygonStipple
|
||||
#define qglGetString glGetString
|
||||
#define qglGetTexGendv glGetTexGendv
|
||||
#define qglGetTexGenfv glGetTexGenfv
|
||||
#define qglGetTexGeniv glGetTexGeniv
|
||||
#define qglGetTexImage glGetTexImage
|
||||
#define qglGetTexLevelParameterfv glGetTexLevelParameterfv
|
||||
#define qglGetTexLevelParameteriv glGetTexLevelParameteriv
|
||||
#define qglGetTexParameterfv glGetTexParameterfv
|
||||
#define qglGetTexParameteriv glGetTexParameteriv
|
||||
#define qglHint glHint
|
||||
#define qglIndexMask glIndexMask
|
||||
#define qglIndexPointer glIndexPointer
|
||||
#define qglIndexd glIndexd
|
||||
#define qglIndexdv glIndexdv
|
||||
#define qglIndexf glIndexf
|
||||
#define qglIndexfv glIndexfv
|
||||
#define qglIndexi glIndexi
|
||||
#define qglIndexiv glIndexiv
|
||||
#define qglIndexs glIndexs
|
||||
#define qglIndexsv glIndexsv
|
||||
#define qglIndexub glIndexub
|
||||
#define qglIndexubv glIndexubv
|
||||
#define qglInitNames glInitNames
|
||||
#define qglInterleavedArrays glInterleavedArrays
|
||||
#define qglIsEnabled glIsEnabled
|
||||
#define qglIsList glIsList
|
||||
#define qglIsTexture glIsTexture
|
||||
#define qglLightModelf glLightModelf
|
||||
#define qglLightModelfv glLightModelfv
|
||||
#define qglLightModeli glLightModeli
|
||||
#define qglLightModeliv glLightModeliv
|
||||
#define qglLightf glLightf
|
||||
#define qglLightfv glLightfv
|
||||
#define qglLighti glLighti
|
||||
#define qglLightiv glLightiv
|
||||
#define qglLineStipple glLineStipple
|
||||
#define qglLineWidth glLineWidth
|
||||
#define qglListBase glListBase
|
||||
#define qglLoadIdentity glLoadIdentity
|
||||
#define qglLoadMatrixd glLoadMatrixd
|
||||
#define qglLoadMatrixf glLoadMatrixf
|
||||
#define qglLoadName glLoadName
|
||||
#define qglLogicOp glLogicOp
|
||||
#define qglMap1d glMap1d
|
||||
#define qglMap1f glMap1f
|
||||
#define qglMap2d glMap2d
|
||||
#define qglMap2f glMap2f
|
||||
#define qglMapGrid1d glMapGrid1d
|
||||
#define qglMapGrid1f glMapGrid1f
|
||||
#define qglMapGrid2d glMapGrid2d
|
||||
#define qglMapGrid2f glMapGrid2f
|
||||
#define qglMaterialf glMaterialf
|
||||
#define qglMaterialfv glMaterialfv
|
||||
#define qglMateriali glMateriali
|
||||
#define qglMaterialiv glMaterialiv
|
||||
#define qglMatrixMode glMatrixMode
|
||||
#define qglMultMatrixd glMultMatrixd
|
||||
#define qglMultMatrixf glMultMatrixf
|
||||
#define qglNewList glNewList
|
||||
#define qglNormal3b glNormal3b
|
||||
#define qglNormal3bv glNormal3bv
|
||||
#define qglNormal3d glNormal3d
|
||||
#define qglNormal3dv glNormal3dv
|
||||
#define qglNormal3f glNormal3f
|
||||
#define qglNormal3fv glNormal3fv
|
||||
#define qglNormal3i glNormal3i
|
||||
#define qglNormal3iv glNormal3iv
|
||||
#define qglNormal3s glNormal3s
|
||||
#define qglNormal3sv glNormal3sv
|
||||
#define qglNormalPointer glNormalPointer
|
||||
#define qglOrtho glOrtho
|
||||
#define qglPassThrough glPassThrough
|
||||
#define qglPixelMapfv glPixelMapfv
|
||||
#define qglPixelMapuiv glPixelMapuiv
|
||||
#define qglPixelMapusv glPixelMapusv
|
||||
#define qglPixelStoref glPixelStoref
|
||||
#define qglPixelStorei glPixelStorei
|
||||
#define qglPixelTransferf glPixelTransferf
|
||||
#define qglPixelTransferi glPixelTransferi
|
||||
#define qglPixelZoom glPixelZoom
|
||||
#define qglPointSize glPointSize
|
||||
#define qglPolygonMode glPolygonMode
|
||||
#define qglPolygonOffset glPolygonOffset
|
||||
#define qglPolygonStipple glPolygonStipple
|
||||
#define qglPopAttrib glPopAttrib
|
||||
#define qglPopClientAttrib glPopClientAttrib
|
||||
#define qglPopMatrix glPopMatrix
|
||||
#define qglPopName glPopName
|
||||
#define qglPrioritizeTextures glPrioritizeTextures
|
||||
#define qglPushAttrib glPushAttrib
|
||||
#define qglPushClientAttrib glPushClientAttrib
|
||||
#define qglPushMatrix glPushMatrix
|
||||
#define qglPushName glPushName
|
||||
#define qglRasterPos2d glRasterPos2d
|
||||
#define qglRasterPos2dv glRasterPos2dv
|
||||
#define qglRasterPos2f glRasterPos2f
|
||||
#define qglRasterPos2fv glRasterPos2fv
|
||||
#define qglRasterPos2i glRasterPos2i
|
||||
#define qglRasterPos2iv glRasterPos2iv
|
||||
#define qglRasterPos2s glRasterPos2s
|
||||
#define qglRasterPos2sv glRasterPos2sv
|
||||
#define qglRasterPos3d glRasterPos3d
|
||||
#define qglRasterPos3dv glRasterPos3dv
|
||||
#define qglRasterPos3f glRasterPos3f
|
||||
#define qglRasterPos3fv glRasterPos3fv
|
||||
#define qglRasterPos3i glRasterPos3i
|
||||
#define qglRasterPos3iv glRasterPos3iv
|
||||
#define qglRasterPos3s glRasterPos3s
|
||||
#define qglRasterPos3sv glRasterPos3sv
|
||||
#define qglRasterPos4d glRasterPos4d
|
||||
#define qglRasterPos4dv glRasterPos4dv
|
||||
#define qglRasterPos4f glRasterPos4f
|
||||
#define qglRasterPos4fv glRasterPos4fv
|
||||
#define qglRasterPos4i glRasterPos4i
|
||||
#define qglRasterPos4iv glRasterPos4iv
|
||||
#define qglRasterPos4s glRasterPos4s
|
||||
#define qglRasterPos4sv glRasterPos4sv
|
||||
#define qglReadBuffer glReadBuffer
|
||||
#define qglReadPixels glReadPixels
|
||||
#define qglRectd glRectd
|
||||
#define qglRectdv glRectdv
|
||||
#define qglRectf glRectf
|
||||
#define qglRectfv glRectfv
|
||||
#define qglRecti glRecti
|
||||
#define qglRectiv glRectiv
|
||||
#define qglRects glRects
|
||||
#define qglRectsv glRectsv
|
||||
#define qglRenderMode glRenderMode
|
||||
#define qglRotated glRotated
|
||||
#define qglRotatef glRotatef
|
||||
#define qglScaled glScaled
|
||||
#define qglScalef glScalef
|
||||
#define qglScissor glScissor
|
||||
#define qglSelectBuffer glSelectBuffer
|
||||
#define qglShadeModel glShadeModel
|
||||
#define qglStencilFunc glStencilFunc
|
||||
#define qglStencilMask glStencilMask
|
||||
#define qglStencilOp glStencilOp
|
||||
#define qglTexCoord1d glTexCoord1d
|
||||
#define qglTexCoord1dv glTexCoord1dv
|
||||
#define qglTexCoord1f glTexCoord1f
|
||||
#define qglTexCoord1fv glTexCoord1fv
|
||||
#define qglTexCoord1i glTexCoord1i
|
||||
#define qglTexCoord1iv glTexCoord1iv
|
||||
#define qglTexCoord1s glTexCoord1s
|
||||
#define qglTexCoord1sv glTexCoord1sv
|
||||
#define qglTexCoord2d glTexCoord2d
|
||||
#define qglTexCoord2dv glTexCoord2dv
|
||||
#define qglTexCoord2f glTexCoord2f
|
||||
#define qglTexCoord2fv glTexCoord2fv
|
||||
#define qglTexCoord2i glTexCoord2i
|
||||
#define qglTexCoord2iv glTexCoord2iv
|
||||
#define qglTexCoord2s glTexCoord2s
|
||||
#define qglTexCoord2sv glTexCoord2sv
|
||||
#define qglTexCoord3d glTexCoord3d
|
||||
#define qglTexCoord3dv glTexCoord3dv
|
||||
#define qglTexCoord3f glTexCoord3f
|
||||
#define qglTexCoord3fv glTexCoord3fv
|
||||
#define qglTexCoord3i glTexCoord3i
|
||||
#define qglTexCoord3iv glTexCoord3iv
|
||||
#define qglTexCoord3s glTexCoord3s
|
||||
#define qglTexCoord3sv glTexCoord3sv
|
||||
#define qglTexCoord4d glTexCoord4d
|
||||
#define qglTexCoord4dv glTexCoord4dv
|
||||
#define qglTexCoord4f glTexCoord4f
|
||||
#define qglTexCoord4fv glTexCoord4fv
|
||||
#define qglTexCoord4i glTexCoord4i
|
||||
#define qglTexCoord4iv glTexCoord4iv
|
||||
#define qglTexCoord4s glTexCoord4s
|
||||
#define qglTexCoord4sv glTexCoord4sv
|
||||
#define qglTexCoordPointer glTexCoordPointer
|
||||
#define qglTexEnvf glTexEnvf
|
||||
#define qglTexEnvfv glTexEnvfv
|
||||
#define qglTexEnvi glTexEnvi
|
||||
#define qglTexEnviv glTexEnviv
|
||||
#define qglTexGend glTexGend
|
||||
#define qglTexGendv glTexGendv
|
||||
#define qglTexGenf glTexGenf
|
||||
#define qglTexGenfv glTexGenfv
|
||||
#define qglTexGeni glTexGeni
|
||||
#define qglTexGeniv glTexGeniv
|
||||
#define qglTexImage1D glTexImage1D
|
||||
#define qglTexImage2D glTexImage2D
|
||||
#define qglTexParameterf glTexParameterf
|
||||
#define qglTexParameterfv glTexParameterfv
|
||||
#define qglTexParameteri glTexParameteri
|
||||
#define qglTexParameteriv glTexParameteriv
|
||||
#define qglTexSubImage1D glTexSubImage1D
|
||||
#define qglTexSubImage2D glTexSubImage2D
|
||||
#define qglTranslated glTranslated
|
||||
#define qglTranslatef glTranslatef
|
||||
#define qglVertex2d glVertex2d
|
||||
#define qglVertex2dv glVertex2dv
|
||||
#define qglVertex2f glVertex2f
|
||||
#define qglVertex2fv glVertex2fv
|
||||
#define qglVertex2i glVertex2i
|
||||
#define qglVertex2iv glVertex2iv
|
||||
#define qglVertex2s glVertex2s
|
||||
#define qglVertex2sv glVertex2sv
|
||||
#define qglVertex3d glVertex3d
|
||||
#define qglVertex3dv glVertex3dv
|
||||
#define qglVertex3f glVertex3f
|
||||
#define qglVertex3fv glVertex3fv
|
||||
#define qglVertex3i glVertex3i
|
||||
#define qglVertex3iv glVertex3iv
|
||||
#define qglVertex3s glVertex3s
|
||||
#define qglVertex3sv glVertex3sv
|
||||
#define qglVertex4d glVertex4d
|
||||
#define qglVertex4dv glVertex4dv
|
||||
#define qglVertex4f glVertex4f
|
||||
#define qglVertex4fv glVertex4fv
|
||||
#define qglVertex4i glVertex4i
|
||||
#define qglVertex4iv glVertex4iv
|
||||
#define qglVertex4s glVertex4s
|
||||
#define qglVertex4sv glVertex4sv
|
||||
#define qglVertexPointer glVertexPointer
|
||||
#define qglViewport glViewport
|
||||
|
|
@ -1019,11 +1019,7 @@ void R_Register( void )
|
|||
r_ext_gamma_control = Cvar_Get( "r_ext_gamma_control", "1", CVAR_ARCHIVE | CVAR_LATCH );
|
||||
r_ext_multitexture = Cvar_Get( "r_ext_multitexture", "1", CVAR_ARCHIVE | CVAR_LATCH );
|
||||
r_ext_compiled_vertex_array = Cvar_Get( "r_ext_compiled_vertex_array", "1", CVAR_ARCHIVE | CVAR_LATCH);
|
||||
#ifdef __linux__ // broken on linux
|
||||
r_ext_texture_env_add = Cvar_Get( "r_ext_texture_env_add", "0", CVAR_ARCHIVE | CVAR_LATCH);
|
||||
#else
|
||||
r_ext_texture_env_add = Cvar_Get( "r_ext_texture_env_add", "1", CVAR_ARCHIVE | CVAR_LATCH);
|
||||
#endif
|
||||
r_ext_texture_filter_anisotropic = Cvar_Get( "r_ext_texture_filter_anisotropic", "16", CVAR_ARCHIVE );
|
||||
|
||||
r_DynamicGlow = Cvar_Get( "r_DynamicGlow", "0", CVAR_ARCHIVE );
|
||||
|
@ -1042,11 +1038,7 @@ void R_Register( void )
|
|||
r_texturebitslm = Cvar_Get( "r_texturebitslm", "0", CVAR_ARCHIVE | CVAR_LATCH );
|
||||
r_colorbits = Cvar_Get( "r_colorbits", "0", CVAR_ARCHIVE | CVAR_LATCH );
|
||||
r_stereo = Cvar_Get( "r_stereo", "0", CVAR_ARCHIVE | CVAR_LATCH );
|
||||
#ifdef __linux__
|
||||
r_stencilbits = Cvar_Get( "r_stencilbits", "0", CVAR_ARCHIVE | CVAR_LATCH );
|
||||
#else
|
||||
r_stencilbits = Cvar_Get( "r_stencilbits", "8", CVAR_ARCHIVE | CVAR_LATCH );
|
||||
#endif
|
||||
r_depthbits = Cvar_Get( "r_depthbits", "0", CVAR_ARCHIVE | CVAR_LATCH );
|
||||
r_overBrightBits = Cvar_Get ("r_overBrightBits", "0", CVAR_ARCHIVE | CVAR_LATCH );
|
||||
r_ignorehwgamma = Cvar_Get( "r_ignorehwgamma", "0", CVAR_ARCHIVE | CVAR_LATCH);
|
||||
|
|
92
codemp/sdl/sdl_gamma.cpp
Normal file
92
codemp/sdl/sdl_gamma.cpp
Normal file
|
@ -0,0 +1,92 @@
|
|||
/*
|
||||
===========================================================================
|
||||
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 Quake III Arena source code; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#ifdef USE_LOCAL_HEADERS
|
||||
# include "SDL.h"
|
||||
#else
|
||||
# include <SDL.h>
|
||||
#endif
|
||||
|
||||
#include "../game/q_shared.h"
|
||||
#include "../renderer/tr_local.h"
|
||||
#include "../qcommon/qcommon.h"
|
||||
|
||||
/*
|
||||
=================
|
||||
GLimp_SetGamma
|
||||
=================
|
||||
*/
|
||||
void GLimp_SetGamma( unsigned char red[256], unsigned char green[256], unsigned char blue[256] )
|
||||
{
|
||||
Uint16 table[3][256];
|
||||
int i, j;
|
||||
|
||||
if( !glConfig.deviceSupportsGamma || r_ignorehwgamma->integer > 0 )
|
||||
return;
|
||||
|
||||
for (i = 0; i < 256; i++)
|
||||
{
|
||||
table[0][i] = ( ( ( Uint16 ) red[i] ) << 8 ) | red[i];
|
||||
table[1][i] = ( ( ( Uint16 ) green[i] ) << 8 ) | green[i];
|
||||
table[2][i] = ( ( ( Uint16 ) blue[i] ) << 8 ) | blue[i];
|
||||
}
|
||||
|
||||
#ifdef _WIN32
|
||||
#include <windows.h>
|
||||
|
||||
// Win2K and newer put this odd restriction on gamma ramps...
|
||||
{
|
||||
OSVERSIONINFO vinfo;
|
||||
|
||||
vinfo.dwOSVersionInfoSize = sizeof( vinfo );
|
||||
GetVersionEx( &vinfo );
|
||||
if( vinfo.dwMajorVersion >= 5 && vinfo.dwPlatformId == VER_PLATFORM_WIN32_NT )
|
||||
{
|
||||
ri.Printf( PRINT_DEVELOPER, "performing gamma clamp.\n" );
|
||||
for( j = 0 ; j < 3 ; j++ )
|
||||
{
|
||||
for( i = 0 ; i < 128 ; i++ )
|
||||
{
|
||||
if( table[ j ] [ i] > ( ( 128 + i ) << 8 ) )
|
||||
table[ j ][ i ] = ( 128 + i ) << 8;
|
||||
}
|
||||
|
||||
if( table[ j ] [127 ] > 254 << 8 )
|
||||
table[ j ][ 127 ] = 254 << 8;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
// enforce constantly increasing
|
||||
for (j = 0; j < 3; j++)
|
||||
{
|
||||
for (i = 1; i < 256; i++)
|
||||
{
|
||||
if (table[j][i] < table[j][i-1])
|
||||
table[j][i] = table[j][i-1];
|
||||
}
|
||||
}
|
||||
|
||||
SDL_SetGammaRamp(table[0], table[1], table[2]);
|
||||
}
|
||||
|
1207
codemp/sdl/sdl_glimp.cpp
Normal file
1207
codemp/sdl/sdl_glimp.cpp
Normal file
File diff suppressed because it is too large
Load diff
1107
codemp/sdl/sdl_input.cpp
Normal file
1107
codemp/sdl/sdl_input.cpp
Normal file
File diff suppressed because it is too large
Load diff
11
codemp/sdl/sdl_local.h
Normal file
11
codemp/sdl/sdl_local.h
Normal file
|
@ -0,0 +1,11 @@
|
|||
#include "../game/q_shared.h"
|
||||
#include "../qcommon/qcommon.h"
|
||||
#include "../client/client.h"
|
||||
|
||||
void IN_Init( void );
|
||||
void IN_Shutdown( void );
|
||||
void IN_Restart( void );
|
||||
|
||||
void Sys_GLimpSafeInit( void );
|
||||
void Sys_GLimpInit( void );
|
||||
void Sys_QueEvent( int time, sysEventType_t type, int value, int value2, int ptrLength, void *ptr );
|
82
codemp/unix/unix_glimp_common.cpp
Normal file
82
codemp/unix/unix_glimp_common.cpp
Normal file
|
@ -0,0 +1,82 @@
|
|||
#include <pthread.h>
|
||||
#include <semaphore.h>
|
||||
#include "../game/q_shared.h"
|
||||
|
||||
/*
|
||||
===========================================================
|
||||
|
||||
SMP acceleration
|
||||
|
||||
===========================================================
|
||||
*/
|
||||
|
||||
sem_t renderCommandsEvent;
|
||||
sem_t renderCompletedEvent;
|
||||
sem_t renderActiveEvent;
|
||||
|
||||
void (*glimpRenderThread)( void );
|
||||
|
||||
void *GLimp_RenderThreadWrapper( void *stub ) {
|
||||
glimpRenderThread();
|
||||
}
|
||||
|
||||
/*
|
||||
=======================
|
||||
GLimp_SpawnRenderThread
|
||||
=======================
|
||||
*/
|
||||
pthread_t renderThreadHandle;
|
||||
qboolean GLimp_SpawnRenderThread( void (*function)( void ) ) {
|
||||
|
||||
sem_init( &renderCommandsEvent, 0, 0 );
|
||||
sem_init( &renderCompletedEvent, 0, 0 );
|
||||
sem_init( &renderActiveEvent, 0, 0 );
|
||||
|
||||
glimpRenderThread = function;
|
||||
|
||||
if (pthread_create( &renderThreadHandle, NULL,
|
||||
GLimp_RenderThreadWrapper, NULL)) {
|
||||
return qfalse;
|
||||
}
|
||||
|
||||
return qtrue;
|
||||
}
|
||||
|
||||
static void *smpData;
|
||||
|
||||
void *GLimp_RendererSleep( void ) {
|
||||
void *data;
|
||||
|
||||
// after this, the front end can exit GLimp_FrontEndSleep
|
||||
sem_post ( &renderCompletedEvent );
|
||||
|
||||
sem_wait ( &renderCommandsEvent );
|
||||
|
||||
data = smpData;
|
||||
|
||||
// after this, the main thread can exit GLimp_WakeRenderer
|
||||
sem_post ( &renderActiveEvent );
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
void GLimp_FrontEndSleep( void ) {
|
||||
sem_wait ( &renderCompletedEvent );
|
||||
}
|
||||
|
||||
void GLimp_WakeRenderer( void *data ) {
|
||||
smpData = data;
|
||||
|
||||
// after this, the renderer can continue through GLimp_RendererSleep
|
||||
sem_post( &renderCommandsEvent );
|
||||
|
||||
sem_wait( &renderActiveEvent );
|
||||
}
|
||||
|
||||
void Sys_GLimpInit( void )
|
||||
{
|
||||
}
|
||||
|
||||
void Sys_GLimpSafeInit( void )
|
||||
{
|
||||
}
|
|
@ -212,7 +212,7 @@ void Sys_Init(void)
|
|||
|
||||
Cvar_Set( "username", Sys_GetCurrentUser() );
|
||||
|
||||
IN_Init();
|
||||
// IN_Init();
|
||||
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue