Files
libreoffice/vcl/source/gdi/opengl.cxx
Oliver Bolte dfd2e05960 INTEGRATION: CWS pchfix02 (1.12.112); FILE MERGED
2006/09/01 17:57:45 kaib 1.12.112.1: #i68856# Added header markers and pch files
2006-09-17 11:06:09 +00:00

1450 lines
44 KiB
C++

/*************************************************************************
*
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: opengl.cxx,v $
*
* $Revision: 1.13 $
*
* last change: $Author: obo $ $Date: 2006-09-17 12:06:09 $
*
* The Contents of this file are made available subject to
* the terms of GNU Lesser General Public License Version 2.1.
*
*
* GNU Lesser General Public License Version 2.1
* =============================================
* Copyright 2005 by Sun Microsystems, Inc.
* 901 San Antonio Road, Palo Alto, CA 94303, USA
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2.1, as published by the Free Software Foundation.
*
* This library 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
* MA 02111-1307 USA
*
************************************************************************/
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_vcl.hxx"
#include <svsys.h>
#include <window.hxx>
#ifndef _SV_OUTDEV_HXX
#include <outdev.hxx>
#endif
#ifndef _SV_SALOGL_HXX
#include <salogl.hxx>
#endif
#ifndef _SV_OPENGL_HXX
#include <opengl.hxx>
#endif
#ifndef _SV_SALGDI_HXX
#include <salgdi.hxx>
#endif
#ifndef _SV_SVDATA_HXX
#include <svdata.hxx>
#endif
#ifndef _SV_SALINST_HXX
#include <salinst.hxx>
#endif
#ifndef _SV_WINDOW_H
#include <window.h>
#endif
#include <svapp.hxx>
#include <vos/mutex.hxx>
// -----------
// - Defines -
// -----------
// -----------------------
// - Fnc-Pointer-Typedef -
// -----------------------
typedef void ( __OPENGL_CALL *OGLFncClearDepth )( GLclampd fDepth );
typedef void ( __OPENGL_CALL *OGLFncDepthFunc )( GLenum fFunc );
typedef void ( __OPENGL_CALL *OGLFncEnable )( GLenum eCap );
typedef void ( __OPENGL_CALL *OGLFncDisable )( GLenum eCap );
typedef void ( __OPENGL_CALL *OGLFncDepthMask )( GLboolean bFlag );
typedef void ( __OPENGL_CALL *OGLFncShadeModel )( GLenum eMode );
typedef void ( __OPENGL_CALL *OGLFncEdgeFlag )( GLboolean bFlag );
typedef void ( __OPENGL_CALL *OGLFncClear )( GLbitfield nMask );
typedef void ( __OPENGL_CALL *OGLFncFlush )( void );
typedef void ( __OPENGL_CALL *OGLFncFinish )( void );
typedef void ( __OPENGL_CALL *OGLFncViewport )( GLint nX, GLint nY, GLsizei nWidth, GLsizei nHeight );
typedef void ( __OPENGL_CALL *OGLFncBegin )( GLenum eMode );
typedef void ( __OPENGL_CALL *OGLFncEnd )( void );
typedef void ( __OPENGL_CALL *OGLFncVertex3dv )( const GLdouble *fV );
typedef void ( __OPENGL_CALL *OGLFncNormal3dv )( const GLdouble *fV );
typedef void ( __OPENGL_CALL *OGLFncColor4ub )( GLubyte cRed, GLubyte cGreen, GLubyte cBlue, GLubyte cAlpha );
typedef void ( __OPENGL_CALL *OGLFncMaterialfv )( GLenum eFace, GLenum ePNname, const GLfloat *fParams );
typedef void ( __OPENGL_CALL *OGLFncMaterialf )( GLenum eFace, GLenum ePName, GLfloat fParam );
typedef void ( __OPENGL_CALL *OGLFncLightModelfv )( GLenum ePNname, const GLfloat *fParams );
typedef void ( __OPENGL_CALL *OGLFncLightModelf )( GLenum ePname, GLfloat fParam );
typedef void ( __OPENGL_CALL *OGLFncLightfv )( GLenum eLight, GLenum ePNname, const GLfloat *fParams );
typedef void ( __OPENGL_CALL *OGLFncLightf )( GLenum eLight, GLenum ePname, GLfloat fParam );
typedef void ( __OPENGL_CALL *OGLFncPolygonMode )( GLenum eFace, GLenum eMode );
typedef void ( __OPENGL_CALL *OGLFncCullFace )( GLenum eMode );
typedef void ( __OPENGL_CALL *OGLFncPointSize )( GLfloat fSize );
typedef void ( __OPENGL_CALL *OGLFncLineWidth )( GLfloat fWidth );
typedef void ( __OPENGL_CALL *OGLFncMatrixMode )( GLenum eMode );
typedef void ( __OPENGL_CALL *OGLFncLoadMatrixd )( const GLdouble *fM );
typedef void ( __OPENGL_CALL *OGLFncTexCoord2dv )( const GLdouble *pParams );
typedef void ( __OPENGL_CALL *OGLFncTexCoord3dv )( const GLdouble *fV );
typedef void ( __OPENGL_CALL *OGLFncTexImage1D )( GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels );
typedef void ( __OPENGL_CALL *OGLFncTexImage2D )( GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels );
typedef void ( __OPENGL_CALL *OGLFncCopyTexImage1D )( GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLint border );
typedef void ( __OPENGL_CALL *OGLFncCopyTexImage2D )( GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border );
typedef void ( __OPENGL_CALL *OGLFncCopyTexSubImage1D )( GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width );
typedef void ( __OPENGL_CALL *OGLFncCopyTexSubImage2D )( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height );
typedef void ( __OPENGL_CALL *OGLFncPixelTransferf )( GLenum pname, GLfloat param );
typedef void ( __OPENGL_CALL *OGLFncPixelTransferi )( GLenum pname, GLint param );
typedef void ( __OPENGL_CALL *OGLFncGetTexLevelParameterfv )( GLenum target, GLint level, GLenum pname, GLfloat *params );
typedef void ( __OPENGL_CALL *OGLFncGetTexLevelParameteriv )( GLenum target, GLint level, GLenum pname, GLint *params );
typedef void ( __OPENGL_CALL *OGLFncGetTexParameterfv )( GLenum target, GLenum pname, GLfloat *params );
typedef void ( __OPENGL_CALL *OGLFncGetTexParameteriv )( GLenum target, GLenum pname, GLint *params );
typedef void ( __OPENGL_CALL *OGLFncTexSubImage1D )( GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels );
typedef void ( __OPENGL_CALL *OGLFncTexSubImage2D )( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels );
typedef void ( __OPENGL_CALL *OGLFncPixelStoref )( GLenum pname, GLfloat param );
typedef void ( __OPENGL_CALL *OGLFncPixelStorei )( GLenum pname, GLint param );
typedef void ( __OPENGL_CALL *OGLFncGenTextures )( GLsizei n, GLuint *textures );
typedef GLboolean ( __OPENGL_CALL *OGLFncIsTexture )( GLuint texture );
typedef void ( __OPENGL_CALL *OGLFncBindTexture )( GLenum target, GLuint texture );
typedef void ( __OPENGL_CALL *OGLFncDeleteTextures )( GLsizei n, const GLuint *textures );
typedef GLboolean ( __OPENGL_CALL *OGLFncAreTexturesResident )( GLsizei n, const GLuint *textures, GLboolean *residences );
typedef void ( __OPENGL_CALL *OGLFncPrioritizeTextures )( GLsizei n, const GLuint *textures, const GLclampf *priorities );
typedef void ( __OPENGL_CALL *OGLFncTexEnvf )( GLenum target, GLenum pname, GLfloat param );
typedef void ( __OPENGL_CALL *OGLFncTexEnvfv )( GLenum target, GLenum pname, const GLfloat *params );
typedef void ( __OPENGL_CALL *OGLFncTexEnvi )( GLenum target, GLenum pname, GLint param );
typedef void ( __OPENGL_CALL *OGLFncTexEnviv )( GLenum target, GLenum pname, const GLint *params );
typedef void ( __OPENGL_CALL *OGLFncTexParameterf )( GLenum target, GLenum pname, GLfloat param );
typedef void ( __OPENGL_CALL *OGLFncTexParameterfv )( GLenum target, GLenum pname, const GLfloat *params );
typedef void ( __OPENGL_CALL *OGLFncTexParameteri )( GLenum target, GLenum pname, GLint param );
typedef void ( __OPENGL_CALL *OGLFncTexParameteriv )( GLenum target, GLenum pname, const GLint *params );
typedef void ( __OPENGL_CALL *OGLFncTexGend )( GLenum coord, GLenum pname, GLdouble param );
typedef void ( __OPENGL_CALL *OGLFncTexGendv )( GLenum coord, GLenum pname, const GLdouble *params );
typedef void ( __OPENGL_CALL *OGLFncTexGenf )( GLenum coord, GLenum pname, GLfloat param );
typedef void ( __OPENGL_CALL *OGLFncTexGenfv )( GLenum coord, GLenum pname, const GLfloat *params );
typedef void ( __OPENGL_CALL *OGLFncTexGeni )( GLenum coord, GLenum pname, GLint param );
typedef void ( __OPENGL_CALL *OGLFncTexGeniv )( GLenum coord, GLenum pname, const GLint *params );
typedef void ( __OPENGL_CALL *OGLFncGetIntegerv )( GLenum pname, GLint *params );
typedef void ( __OPENGL_CALL *OGLFncPolygonOffset ) ( GLfloat factor, GLfloat units );
typedef void ( __OPENGL_CALL *OGLFncScissor ) ( GLint x, GLint y, GLsizei width, GLsizei height );
typedef void ( __OPENGL_CALL *OGLFncEnableClientState ) ( GLenum array );
typedef void ( __OPENGL_CALL *OGLFncDisableClientState ) ( GLenum array );
typedef void ( __OPENGL_CALL *OGLFncVertexPointer ) ( GLint size, GLenum type, GLsizei stride, const GLvoid *pointer );
typedef void ( __OPENGL_CALL *OGLFncColorPointer ) ( GLint size, GLenum type, GLsizei stride, const GLvoid *pointer );
typedef void ( __OPENGL_CALL *OGLFncIndexPointer ) ( GLenum type, GLsizei stride, const GLvoid *pointer );
typedef void ( __OPENGL_CALL *OGLFncNormalPointer ) ( GLenum type, GLsizei stride, const GLvoid *pointer );
typedef void ( __OPENGL_CALL *OGLFncTexCoordPointer ) ( GLint size, GLenum type, GLsizei stride, const GLvoid *pointer );
typedef void ( __OPENGL_CALL *OGLFncEdgeFlagPointer ) ( GLsizei stride, const GLvoid *pointer );
typedef void ( __OPENGL_CALL *OGLFncArrayElement ) ( GLint i );
typedef void ( __OPENGL_CALL *OGLFncDrawElements ) ( GLenum mode, GLsizei count, GLenum type, const GLvoid *indices );
typedef void ( __OPENGL_CALL *OGLFncDrawArrays ) ( GLenum mode, GLint first, GLsizei count );
typedef void ( __OPENGL_CALL *OGLFncInterleavedArrays ) ( GLenum format, GLsizei stride, const GLvoid *pointer );
typedef void ( __OPENGL_CALL *OGLFncLoadIdentity ) ();
typedef void ( __OPENGL_CALL *OGLFncBlendFunc ) ( GLenum sfactor, GLenum dfactor );
// ----------
// - Macros -
// ----------
#define PGRAPHICS mpOutDev->mpGraphics
#define OGL_INIT() (mpOGL && (mpOutDev->mpGraphics || mpOutDev->ImplGetGraphics()))
#define INIT_OGLFNC( FncName ) static OGLFnc##FncName pImplOpenGLFnc##FncName = NULL
#define GET_OGLFNC_GL( FncName ) \
pImplOpenGLFnc##FncName = (OGLFnc##FncName) mpOGL->GetOGLFnc( "gl" #FncName ); \
if( !pImplOpenGLFnc##FncName ) bRet = FALSE;
// ----------
// - OpenGL -
// ----------
static BOOL bImplOpenGLFncPtrInitialized = FALSE;
INIT_OGLFNC( ClearDepth );
INIT_OGLFNC( DepthFunc );
INIT_OGLFNC( Enable );
INIT_OGLFNC( Disable );
INIT_OGLFNC( DepthMask );
INIT_OGLFNC( ShadeModel );
INIT_OGLFNC( EdgeFlag );
INIT_OGLFNC( Clear );
INIT_OGLFNC( Flush );
INIT_OGLFNC( Finish );
INIT_OGLFNC( Viewport );
INIT_OGLFNC( Begin );
INIT_OGLFNC( End );
INIT_OGLFNC( Vertex3dv );
INIT_OGLFNC( Normal3dv );
INIT_OGLFNC( Color4ub );
INIT_OGLFNC( Materialfv );
INIT_OGLFNC( Materialf );
INIT_OGLFNC( LightModelfv );
INIT_OGLFNC( LightModelf );
INIT_OGLFNC( Lightfv );
INIT_OGLFNC( Lightf );
INIT_OGLFNC( PolygonMode );
INIT_OGLFNC( CullFace );
INIT_OGLFNC( PointSize );
INIT_OGLFNC( LineWidth );
INIT_OGLFNC( MatrixMode );
INIT_OGLFNC( LoadMatrixd );
INIT_OGLFNC( TexCoord2dv );
INIT_OGLFNC( TexCoord3dv );
INIT_OGLFNC( TexImage1D );
INIT_OGLFNC( TexImage2D );
INIT_OGLFNC( CopyTexImage1D );
INIT_OGLFNC( CopyTexImage2D );
INIT_OGLFNC( CopyTexSubImage1D );
INIT_OGLFNC( CopyTexSubImage2D );
INIT_OGLFNC( PixelTransferf );
INIT_OGLFNC( PixelTransferi );
INIT_OGLFNC( GetTexLevelParameterfv );
INIT_OGLFNC( GetTexLevelParameteriv );
INIT_OGLFNC( GetTexParameterfv );
INIT_OGLFNC( GetTexParameteriv );
INIT_OGLFNC( TexSubImage1D );
INIT_OGLFNC( TexSubImage2D );
INIT_OGLFNC( PixelStoref );
INIT_OGLFNC( PixelStorei );
INIT_OGLFNC( GenTextures );
INIT_OGLFNC( IsTexture );
INIT_OGLFNC( BindTexture );
INIT_OGLFNC( DeleteTextures );
INIT_OGLFNC( AreTexturesResident );
INIT_OGLFNC( PrioritizeTextures );
INIT_OGLFNC( TexEnvf );
INIT_OGLFNC( TexEnvfv );
INIT_OGLFNC( TexEnvi );
INIT_OGLFNC( TexEnviv );
INIT_OGLFNC( TexParameterf );
INIT_OGLFNC( TexParameterfv );
INIT_OGLFNC( TexParameteri );
INIT_OGLFNC( TexParameteriv );
INIT_OGLFNC( TexGend );
INIT_OGLFNC( TexGendv );
INIT_OGLFNC( TexGenf );
INIT_OGLFNC( TexGenfv );
INIT_OGLFNC( TexGeni );
INIT_OGLFNC( TexGeniv );
INIT_OGLFNC( GetIntegerv );
INIT_OGLFNC( PolygonOffset );
INIT_OGLFNC( Scissor );
INIT_OGLFNC( EnableClientState );
INIT_OGLFNC( DisableClientState );
INIT_OGLFNC( VertexPointer );
INIT_OGLFNC( ColorPointer );
INIT_OGLFNC( IndexPointer );
INIT_OGLFNC( NormalPointer );
INIT_OGLFNC( TexCoordPointer );
INIT_OGLFNC( EdgeFlagPointer );
INIT_OGLFNC( ArrayElement );
INIT_OGLFNC( DrawElements );
INIT_OGLFNC( DrawArrays );
INIT_OGLFNC( InterleavedArrays );
INIT_OGLFNC( LoadIdentity );
INIT_OGLFNC( BlendFunc );
// ------------------------------------------------------------------------
BOOL OpenGL::ImplInitFncPointers()
{
BOOL bRet = TRUE;
GET_OGLFNC_GL( ClearDepth );
GET_OGLFNC_GL( DepthFunc );
GET_OGLFNC_GL( Enable );
GET_OGLFNC_GL( Disable );
GET_OGLFNC_GL( DepthMask );
GET_OGLFNC_GL( ShadeModel );
GET_OGLFNC_GL( EdgeFlag );
GET_OGLFNC_GL( Clear );
GET_OGLFNC_GL( Flush );
GET_OGLFNC_GL( Finish );
GET_OGLFNC_GL( Viewport );
GET_OGLFNC_GL( Begin );
GET_OGLFNC_GL( End );
GET_OGLFNC_GL( Vertex3dv );
GET_OGLFNC_GL( Normal3dv );
GET_OGLFNC_GL( Color4ub );
GET_OGLFNC_GL( Materialfv );
GET_OGLFNC_GL( Materialf );
GET_OGLFNC_GL( LightModelfv );
GET_OGLFNC_GL( LightModelf );
GET_OGLFNC_GL( Lightfv );
GET_OGLFNC_GL( Lightf );
GET_OGLFNC_GL( PolygonMode );
GET_OGLFNC_GL( CullFace );
GET_OGLFNC_GL( PointSize );
GET_OGLFNC_GL( LineWidth );
GET_OGLFNC_GL( MatrixMode );
GET_OGLFNC_GL( LoadMatrixd );
GET_OGLFNC_GL( TexCoord2dv );
GET_OGLFNC_GL( TexCoord3dv );
GET_OGLFNC_GL( TexImage1D );
GET_OGLFNC_GL( TexImage2D );
GET_OGLFNC_GL( CopyTexImage1D );
GET_OGLFNC_GL( CopyTexImage2D );
GET_OGLFNC_GL( CopyTexSubImage1D );
GET_OGLFNC_GL( CopyTexSubImage2D );
GET_OGLFNC_GL( PixelTransferf );
GET_OGLFNC_GL( PixelTransferi );
GET_OGLFNC_GL( GetTexLevelParameterfv );
GET_OGLFNC_GL( GetTexLevelParameteriv );
GET_OGLFNC_GL( GetTexParameterfv );
GET_OGLFNC_GL( GetTexParameteriv );
GET_OGLFNC_GL( TexSubImage1D );
GET_OGLFNC_GL( TexSubImage2D );
GET_OGLFNC_GL( PixelStoref );
GET_OGLFNC_GL( PixelStorei );
GET_OGLFNC_GL( GenTextures );
GET_OGLFNC_GL( IsTexture );
GET_OGLFNC_GL( BindTexture );
GET_OGLFNC_GL( DeleteTextures );
GET_OGLFNC_GL( AreTexturesResident );
GET_OGLFNC_GL( PrioritizeTextures );
GET_OGLFNC_GL( TexEnvf );
GET_OGLFNC_GL( TexEnvfv );
GET_OGLFNC_GL( TexEnvi );
GET_OGLFNC_GL( TexEnviv );
GET_OGLFNC_GL( TexParameterf );
GET_OGLFNC_GL( TexParameterfv );
GET_OGLFNC_GL( TexParameteri );
GET_OGLFNC_GL( TexParameteriv );
GET_OGLFNC_GL( TexGend );
GET_OGLFNC_GL( TexGendv );
GET_OGLFNC_GL( TexGenf );
GET_OGLFNC_GL( TexGenfv );
GET_OGLFNC_GL( TexGeni );
GET_OGLFNC_GL( TexGeniv );
GET_OGLFNC_GL( GetIntegerv );
GET_OGLFNC_GL( PolygonOffset );
GET_OGLFNC_GL( Scissor );
GET_OGLFNC_GL( EnableClientState );
GET_OGLFNC_GL( DisableClientState );
GET_OGLFNC_GL( VertexPointer );
GET_OGLFNC_GL( ColorPointer );
GET_OGLFNC_GL( IndexPointer );
GET_OGLFNC_GL( NormalPointer );
GET_OGLFNC_GL( TexCoordPointer );
GET_OGLFNC_GL( EdgeFlagPointer );
GET_OGLFNC_GL( ArrayElement );
GET_OGLFNC_GL( DrawElements );
GET_OGLFNC_GL( DrawArrays );
GET_OGLFNC_GL( InterleavedArrays );
GET_OGLFNC_GL( LoadIdentity );
GET_OGLFNC_GL( BlendFunc );
return bRet;
}
BOOL OpenGL::mbNoOGL = FALSE;
// ------------------------------------------------------------------------
OpenGL::OpenGL( OutputDevice* pOutDev ) :
mpOutDev( pOutDev )
{
ImplInit();
}
// ------------------------------------------------------------------------
OpenGL::~OpenGL()
{
delete mpOGL;
}
// ------------------------------------------------------------------------
void OpenGL::ImplInit()
{
if( ( PGRAPHICS || mpOutDev->ImplGetGraphics() ) && ! mbNoOGL )
{
mpOGL = ImplGetSVData()->mpDefInst->CreateSalOpenGL( PGRAPHICS );
if ( !mpOGL->IsValid() || (!bImplOpenGLFncPtrInitialized && !ImplInitFncPointers()) )
{
delete mpOGL;
mpOGL = NULL;
}
else
bImplOpenGLFncPtrInitialized = TRUE;
}
else
mpOGL = NULL;
}
// ------------------------------------------------------------------------
void OpenGL::SetConnectOutputDevice( OutputDevice* pOutDev )
{
delete mpOGL;
mpOutDev = pOutDev;
ImplInit();
}
// ------------------------------------------------------------------------
void OpenGL::ClearDepth( GLclampd fDepth )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncClearDepth( fDepth );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::DepthFunc( GLenum eFunc )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncDepthFunc( eFunc );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::Enable( GLenum eCap )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncEnable( eCap );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::Disable( GLenum eCap )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncDisable( eCap );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::DepthMask( GLboolean bFlag )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncDepthMask( bFlag );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::ShadeModel( GLenum eMode )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncShadeModel( eMode );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::EdgeFlag( GLboolean bFlag )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncEdgeFlag( bFlag );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::Clear( GLbitfield nMask )
{
if( OGL_INIT() )
{
#if defined UNX && ! defined MACOSX
mpOGL->StartScene( PGRAPHICS );
#endif
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncClear( nMask );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::Flush()
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncFlush();
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::Finish()
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncFinish();
#if defined UNX && ! defined MACOSX
mpOGL->StopScene();
#endif
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::Viewport( GLint nX, GLint nY, GLsizei nWidth, GLsizei nHeight )
{
if( OGL_INIT() )
{
long nOutHeight;
if( mpOutDev->GetOutDevType() == OUTDEV_WINDOW )
nOutHeight = ( (Window*) mpOutDev )->ImplGetFrameWindow()->mnOutHeight;
else
nOutHeight = mpOutDev->mnOutHeight;
mpOGL->OGLEntry( PGRAPHICS );
// --- RTL --- mirror viewport coordinates
if( mpOutDev->ImplHasMirroredGraphics() )
{
long lx = nX + mpOutDev->mnOutOffX;
long lwidth = nWidth;
mpOutDev->mpGraphics->mirror( lx, lwidth, mpOutDev );
nX = lx - mpOutDev->mnOutOffX;
}
pImplOpenGLFncViewport( nX + mpOutDev->mnOutOffX,
nOutHeight - nY - nHeight - mpOutDev->mnOutOffY,
nWidth, nHeight );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::Begin( GLenum eMode )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncBegin( eMode );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::End()
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncEnd();
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::Vertex3dv( const GLdouble* fVar )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncVertex3dv( fVar );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::Normal3dv( const GLdouble* fVar )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncNormal3dv( fVar );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::Color4ub( GLubyte cRed, GLubyte cGreen, GLubyte cBlue, GLubyte cAlpha )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncColor4ub( cRed, cGreen, cBlue, cAlpha );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::Materialfv( GLenum eFace, GLenum ePName, const GLfloat *fParams )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncMaterialfv( eFace, ePName, fParams );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::Materialf( GLenum eFace, GLenum ePName, GLfloat fParam )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncMaterialf( eFace, ePName, fParam );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::LightModelfv( GLenum ePName, const GLfloat *fParams )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncLightModelfv( ePName, fParams );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::LightModelf( GLenum ePName, GLfloat fParam )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncLightModelf( ePName, fParam );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::Lightfv( GLenum eLight, GLenum ePName, const GLfloat *fParams )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncLightfv( eLight, ePName, fParams );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::Lightf( GLenum eLight, GLenum ePName, GLfloat fParam )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncLightf( eLight, ePName, fParam );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::PolygonMode( GLenum eFace, GLenum eMode )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncPolygonMode( eFace, eMode );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::CullFace( GLenum eMode )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncCullFace( eMode );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::PointSize( GLfloat fSize )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncPointSize( fSize );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::LineWidth( GLfloat fWidth )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncLineWidth( fWidth );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::MatrixMode( GLenum eMode )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncMatrixMode( eMode );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::LoadMatrixd( const GLdouble *fM )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncLoadMatrixd( fM );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::TexCoord2dv( const GLdouble *pParams )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncTexCoord2dv( pParams );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::TexCoord3dv( const GLdouble *fVar )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncTexCoord3dv( fVar );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::TexImage1D( GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncTexImage1D( target, level, internalformat, width, border, format, type, pixels );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::TexImage2D( GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncTexImage2D( target, level, internalformat, width, height, border, format, type, pixels );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::CopyTexImage1D( GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLint border )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncCopyTexImage1D( target, level, internalFormat, x, y, width, border );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::CopyTexImage2D( GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncCopyTexImage2D( target, level, internalFormat, x, y, width, height, border );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::CopyTexSubImage1D( GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncCopyTexSubImage1D( target, level, xoffset, x, y, width );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::CopyTexSubImage2D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncCopyTexSubImage2D( target, level, xoffset, yoffset, x, y, width, height );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::PixelTransferf( GLenum pname, GLfloat param )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncPixelTransferf( pname, param );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::PixelTransferi( GLenum pname, GLint param )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncPixelTransferi( pname, param );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::GetTexLevelParameterfv( GLenum target, GLint level, GLenum pname, GLfloat *params )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncGetTexLevelParameterfv( target, level, pname, params );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::GetTexLevelParameteriv( GLenum target, GLint level, GLenum pname, GLint *params )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncGetTexLevelParameteriv( target, level, pname, params );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::GetTexParameterfv( GLenum target, GLenum pname, GLfloat *params )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncGetTexParameterfv( target, pname, params );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::GetTexParameteriv( GLenum target, GLenum pname, GLint *params )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncGetTexParameteriv( target, pname, params );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::TexSubImage1D( GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncTexSubImage1D( target, level, xoffset, width, format, type, pixels );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::TexSubImage2D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncTexSubImage2D( target, level, xoffset, yoffset, width, height, format, type, pixels );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::PixelStoref( GLenum pname, GLfloat param )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncPixelStoref( pname, param );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::PixelStorei( GLenum pname, GLint param )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncPixelStorei( pname, param );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::GenTextures( GLsizei n, GLuint *textures )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncGenTextures( n, textures );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
GLboolean OpenGL::IsTexture( GLuint texture )
{
GLboolean bRet = FALSE;
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
bRet = pImplOpenGLFncIsTexture( texture );
mpOGL->OGLExit( PGRAPHICS );
}
return bRet;
}
// ------------------------------------------------------------------------
void OpenGL::BindTexture( GLenum target, GLuint texture )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncBindTexture( target, texture );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::DeleteTextures( GLsizei n, const GLuint *textures )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncDeleteTextures( n, textures );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
GLboolean OpenGL::AreTexturesResident( GLsizei n, const GLuint *textures, GLboolean *residences )
{
GLboolean bRet = FALSE;
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
bRet = pImplOpenGLFncAreTexturesResident( n, textures, residences );
mpOGL->OGLExit( PGRAPHICS );
}
return bRet;
}
// ------------------------------------------------------------------------
void OpenGL::PrioritizeTextures( GLsizei n, const GLuint *textures, const GLclampf *priorities )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncPrioritizeTextures( n, textures, priorities );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::TexEnvf( GLenum target, GLenum pname, GLfloat param )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncTexEnvf( target, pname, param );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::TexEnvfv( GLenum target, GLenum pname, const GLfloat *params )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncTexEnvfv( target, pname, params );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::TexEnvi( GLenum target, GLenum pname, GLint param )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncTexEnvi( target, pname, param );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::TexEnviv( GLenum target, GLenum pname, const GLint *params )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncTexEnviv( target, pname, params );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::TexParameterf( GLenum target, GLenum pname, GLfloat param )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncTexParameterf( target, pname, param );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::TexParameterfv( GLenum target, GLenum pname, const GLfloat *params )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncTexParameterfv( target, pname, params );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::TexParameteri( GLenum target, GLenum pname, GLint param )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncTexParameteri( target, pname, param );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::TexParameteriv( GLenum target, GLenum pname, const GLint *params )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncTexParameteriv( target, pname, params );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::TexGend( GLenum coord, GLenum pname, GLdouble param )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncTexGend( coord, pname, param );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::TexGendv( GLenum coord, GLenum pname, const GLdouble *params )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncTexGendv( coord, pname, params );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::TexGenf( GLenum coord, GLenum pname, GLfloat param )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncTexGenf( coord, pname, param );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::TexGenfv( GLenum coord, GLenum pname, const GLfloat *params )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncTexGenfv( coord, pname, params );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::TexGeni( GLenum coord, GLenum pname, GLint param )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncTexGeni( coord, pname, param );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::TexGeniv( GLenum coord, GLenum pname, const GLint *params )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncTexGeniv( coord, pname, params );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::GetIntegerv( GLenum pname, GLint *params )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncGetIntegerv( pname, params );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::PolygonOffset( GLfloat factor, GLfloat units )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncPolygonOffset( factor, units );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::Scissor( GLint nX, GLint nY, GLsizei nWidth, GLsizei nHeight )
{
if( OGL_INIT() )
{
long nOutHeight;
if( mpOutDev->GetOutDevType() == OUTDEV_WINDOW )
nOutHeight = ( (Window*) mpOutDev )->ImplGetFrameWindow()->mnOutHeight;
else
nOutHeight = mpOutDev->mnOutHeight;
mpOGL->OGLEntry( PGRAPHICS );
// --- RTL --- mirror scissor coordinates
if( mpOutDev->ImplHasMirroredGraphics() )
{
long lx = nX + mpOutDev->mnOutOffX;
long lwidth = nWidth;
mpOutDev->mpGraphics->mirror( lx, lwidth, mpOutDev );
nX = lx - mpOutDev->mnOutOffX;
}
pImplOpenGLFncScissor( nX + mpOutDev->mnOutOffX,
nOutHeight - nY - nHeight - mpOutDev->mnOutOffY,
nWidth, nHeight );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::EnableClientState( GLenum array )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncEnableClientState( array );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::DisableClientState( GLenum array )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncDisableClientState( array );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::VertexPointer( GLint size, GLenum type, GLsizei stride, const GLvoid *pointer )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncVertexPointer( size, type, stride, pointer );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::ColorPointer( GLint size, GLenum type, GLsizei stride, const GLvoid *pointer )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncColorPointer( size, type, stride, pointer );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::IndexPointer( GLenum type, GLsizei stride, const GLvoid *pointer )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncIndexPointer( type, stride, pointer );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::NormalPointer( GLenum type, GLsizei stride, const GLvoid *pointer )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncNormalPointer( type, stride, pointer );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::TexCoordPointer( GLint size, GLenum type, GLsizei stride, const GLvoid *pointer )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncTexCoordPointer( size, type, stride, pointer );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::EdgeFlagPointer( GLsizei stride, const GLvoid *pointer )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncEdgeFlagPointer( stride, pointer );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::ArrayElement( GLint i )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncArrayElement( i );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::DrawElements( GLenum mode, GLsizei count, GLenum type, const GLvoid *indices )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncDrawElements( mode, count, type, indices );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::DrawArrays( GLenum mode, GLint first, GLsizei count )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncDrawArrays( mode, first, count );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::InterleavedArrays( GLenum format, GLsizei stride, const GLvoid *pointer )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncInterleavedArrays( format, stride, pointer );
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::LoadIdentity( )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncLoadIdentity();
mpOGL->OGLExit( PGRAPHICS );
}
}
// ------------------------------------------------------------------------
void OpenGL::BlendFunc( GLenum sfactor, GLenum dfactor )
{
if( OGL_INIT() )
{
mpOGL->OGLEntry( PGRAPHICS );
pImplOpenGLFncBlendFunc( sfactor, dfactor);
mpOGL->OGLExit( PGRAPHICS );
}
}