summaryrefslogtreecommitdiff
path: root/slideshow
diff options
context:
space:
mode:
authorTor Lillqvist <tlillqvist@suse.com>2013-01-10 23:20:11 +0200
committerTor Lillqvist <tlillqvist@suse.com>2013-01-10 23:53:41 +0200
commitb51d0ec93d11bd34766ef95dc09d8347cfbe86c6 (patch)
tree09b7f119a919168898ed4ade6751f806c192b051 /slideshow
parent67ff1e9f981876e60df289c4cc3061c2ca4cc4cc (diff)
Make the OpenGL transition code buildable for Windows
Whether it works at run-time is another question;) Use the same source files as for X11, with relevant conditional coding. The Windows OpenGL import library corresponds to OpenGL 1.2, so we can't directly use APIs from OpenGL 1.3 or newer. (Even if they as such are present in the "Mesa" headers we use.) So look up also glActivetexture() dynamically. Change-Id: I2280e2ad7e190356e9409cc28142fa9fc33e078b
Diffstat (limited to 'slideshow')
-rw-r--r--slideshow/Library_OGLTrans.mk5
-rw-r--r--slideshow/source/engine/OGLTrans/unx/OGLTrans_Shaders.cxx33
-rw-r--r--slideshow/source/engine/OGLTrans/unx/OGLTrans_Shaders.hxx2
-rw-r--r--slideshow/source/engine/OGLTrans/unx/OGLTrans_TransitionImpl.cxx8
-rw-r--r--slideshow/source/engine/OGLTrans/unx/OGLTrans_TransitionImpl.hxx8
-rw-r--r--slideshow/source/engine/OGLTrans/unx/OGLTrans_TransitionerImpl.cxx117
-rw-r--r--slideshow/source/engine/OGLTrans/win/OGLTrans_Shaders.hxx71
7 files changed, 115 insertions, 129 deletions
diff --git a/slideshow/Library_OGLTrans.mk b/slideshow/Library_OGLTrans.mk
index 44db60bdf289..1dd2f15e773d 100644
--- a/slideshow/Library_OGLTrans.mk
+++ b/slideshow/Library_OGLTrans.mk
@@ -46,6 +46,7 @@ endif
$(eval $(call gb_Library_use_sdk_api,OGLTrans))
$(eval $(call gb_Library_use_libraries,OGLTrans,\
+ basegfx \
canvastools \
comphelper \
cppu \
@@ -87,8 +88,8 @@ $(eval $(call gb_Library_use_system_win32_libs,OGLTrans,\
$(eval $(call gb_Library_add_exception_objects,OGLTrans,\
slideshow/source/engine/OGLTrans/unx/OGLTrans_Shaders \
- slideshow/source/engine/OGLTrans/win/OGLTrans_TransitionerImpl \
- slideshow/source/engine/OGLTrans/win/OGLTrans_TransitionImpl \
+ slideshow/source/engine/OGLTrans/unx/OGLTrans_TransitionerImpl \
+ slideshow/source/engine/OGLTrans/unx/OGLTrans_TransitionImpl \
))
else
diff --git a/slideshow/source/engine/OGLTrans/unx/OGLTrans_Shaders.cxx b/slideshow/source/engine/OGLTrans/unx/OGLTrans_Shaders.cxx
index e7e6424e4a94..e2f1a58a1cdb 100644
--- a/slideshow/source/engine/OGLTrans/unx/OGLTrans_Shaders.cxx
+++ b/slideshow/source/engine/OGLTrans/unx/OGLTrans_Shaders.cxx
@@ -30,16 +30,26 @@
#include "OGLTrans_Shaders.hxx"
+#ifdef _WIN32
+
+#elif defined(MACOSX)
+
+#else // UNX == X11
+
namespace unx
{
+#define GLX_GLXEXT_PROTOTYPES 1
#include <GL/glx.h>
#include <GL/glxext.h>
}
+#endif
+
bool OGLShaders::cbInitialized = false;
#ifdef GL_VERSION_2_0
+PFNGLACTIVETEXTUREPROC OGLShaders::glActiveTexture = NULL;
PFNGLCREATESHADERPROC OGLShaders::glCreateShader = NULL;
PFNGLSHADERSOURCEPROC OGLShaders::glShaderSource = NULL;
PFNGLCOMPILESHADERPROC OGLShaders::glCompileShader = NULL;
@@ -62,6 +72,28 @@ bool OGLShaders::Initialize()
{
#ifdef GL_VERSION_2_0
if( !cbInitialized ) {
+#ifdef _WIN32
+ glActiveTexture = (PFNGLACTIVETEXTUREPROC) wglGetProcAddress( "glActiveTexture" );
+ glCreateShader = (PFNGLCREATESHADERPROC) wglGetProcAddress( "glCreateShader" );
+ glShaderSource = (PFNGLSHADERSOURCEPROC) wglGetProcAddress( "glShaderSource" );
+ glCompileShader = (PFNGLCOMPILESHADERPROC) wglGetProcAddress( "glCompileShader" );
+ glGetShaderiv = (PFNGLGETSHADERIVPROC) wglGetProcAddress( "glGetShaderiv" );
+ glGetShaderInfoLog = (PFNGLGETSHADERINFOLOGPROC) wglGetProcAddress( "glGetShaderInfoLog" );
+ glDeleteShader = (PFNGLDELETESHADERPROC) wglGetProcAddress( "glDeleteShader" );
+ glCreateProgram = (PFNGLCREATEPROGRAMPROC) wglGetProcAddress( "glCreateProgram" );
+ glAttachShader = (PFNGLATTACHSHADERPROC) wglGetProcAddress( "glAttachShader" );
+ glLinkProgram = (PFNGLLINKPROGRAMPROC) wglGetProcAddress( "glLinkProgram" );
+ glGetProgramiv = (PFNGLGETPROGRAMIVPROC) wglGetProcAddress( "glGetProgramiv" );
+ glGetProgramInfoLog = (PFNGLGETPROGRAMINFOLOGPROC) wglGetProcAddress( "glGetProgramInfoLog" );
+ glUseProgram = (PFNGLUSEPROGRAMPROC) wglGetProcAddress( "glUseProgram" );
+ glDeleteProgram = (PFNGLDELETEPROGRAMPROC) wglGetProcAddress( "glDeleteProgram" );
+ glGetUniformLocation = (PFNGLGETUNIFORMLOCATIONPROC) wglGetProcAddress( "glGetUniformLocation" );
+ glUniform1i = (PFNGLUNIFORM1IPROC) wglGetProcAddress( "glUniform1i" );
+ glUniform1f = (PFNGLUNIFORM1FPROC) wglGetProcAddress( "glUniform1f" );
+ cbInitialized = true;
+#elif defined(MACOSX)
+#else
+ glActiveTexture = (PFNGLCREATESHADERPROC) unx::glXGetProcAddress( (unsigned char *) "glActiveTexture" );
glCreateShader = (PFNGLCREATESHADERPROC) unx::glXGetProcAddress( (unsigned char *) "glCreateShader" );
glShaderSource = (PFNGLSHADERSOURCEPROC) unx::glXGetProcAddress( (unsigned char *) "glShaderSource" );
glCompileShader = (PFNGLCOMPILESHADERPROC) unx::glXGetProcAddress( (unsigned char *) "glCompileShader" );
@@ -79,6 +111,7 @@ bool OGLShaders::Initialize()
glUniform1i = (PFNGLUNIFORM1IPROC) unx::glXGetProcAddress( (unsigned char *) "glUniform1i" );
glUniform1f = (PFNGLUNIFORM1FPROC) unx::glXGetProcAddress( (unsigned char *) "glUniform1f" );
cbInitialized = true;
+#endif
}
return glCreateShader != NULL;
diff --git a/slideshow/source/engine/OGLTrans/unx/OGLTrans_Shaders.hxx b/slideshow/source/engine/OGLTrans/unx/OGLTrans_Shaders.hxx
index 016f8ac5445a..d6a2cb66e8a3 100644
--- a/slideshow/source/engine/OGLTrans/unx/OGLTrans_Shaders.hxx
+++ b/slideshow/source/engine/OGLTrans/unx/OGLTrans_Shaders.hxx
@@ -45,6 +45,8 @@ public:
*/
#ifdef GL_VERSION_2_0
+ static PFNGLACTIVETEXTUREPROC glActiveTexture;
+
static PFNGLCREATESHADERPROC glCreateShader;
static PFNGLSHADERSOURCEPROC glShaderSource;
static PFNGLCOMPILESHADERPROC glCompileShader;
diff --git a/slideshow/source/engine/OGLTrans/unx/OGLTrans_TransitionImpl.cxx b/slideshow/source/engine/OGLTrans/unx/OGLTrans_TransitionImpl.cxx
index 1df780221d69..2e1709e098e9 100644
--- a/slideshow/source/engine/OGLTrans/unx/OGLTrans_TransitionImpl.cxx
+++ b/slideshow/source/engine/OGLTrans/unx/OGLTrans_TransitionImpl.cxx
@@ -1419,9 +1419,9 @@ void ShaderTransition::displaySlides_( double nTime, ::sal_Int32 glLeavingSlideT
}
}
- glActiveTexture( GL_TEXTURE2 );
+ OGLShaders::glActiveTexture( GL_TEXTURE2 );
glBindTexture( GL_TEXTURE_2D, glEnteringSlideTex );
- glActiveTexture( GL_TEXTURE0 );
+ OGLShaders::glActiveTexture( GL_TEXTURE0 );
#endif
displaySlide( nTime, glLeavingSlideTex, getScene().getLeavingSlide(), SlideWidthScale, SlideHeightScale );
@@ -1517,10 +1517,10 @@ void ShaderTransition::impl_preparePermShader()
OGLShaders::glUniform1i( location, 0 ); // texture unit 0
}
- glActiveTexture(GL_TEXTURE1);
+ OGLShaders::glActiveTexture(GL_TEXTURE1);
if( !m_nHelperTexture )
initPermTexture( &m_nHelperTexture );
- glActiveTexture(GL_TEXTURE0);
+ OGLShaders::glActiveTexture(GL_TEXTURE0);
location = OGLShaders::glGetUniformLocation( m_nProgramObject, "permTexture" );
if( location != -1 ) {
diff --git a/slideshow/source/engine/OGLTrans/unx/OGLTrans_TransitionImpl.hxx b/slideshow/source/engine/OGLTrans/unx/OGLTrans_TransitionImpl.hxx
index 9b27b47dc8d7..f2c691106403 100644
--- a/slideshow/source/engine/OGLTrans/unx/OGLTrans_TransitionImpl.hxx
+++ b/slideshow/source/engine/OGLTrans/unx/OGLTrans_TransitionImpl.hxx
@@ -35,6 +35,14 @@
#include <basegfx/vector/b3dvector.hxx>
#include <vector>
+
+#ifdef _WIN32
+// <GL/gl.h> includes <windows.h>, so include that early through
+// <prewin.h> to avoid name clashes from at least GDI's Rectangle().
+#include <prewin.h>
+#include <postwin.h>
+#endif
+
#include <GL/gl.h>
class Primitive;
diff --git a/slideshow/source/engine/OGLTrans/unx/OGLTrans_TransitionerImpl.cxx b/slideshow/source/engine/OGLTrans/unx/OGLTrans_TransitionerImpl.cxx
index 93c1d13e97ac..2dd366f5db70 100644
--- a/slideshow/source/engine/OGLTrans/unx/OGLTrans_TransitionerImpl.cxx
+++ b/slideshow/source/engine/OGLTrans/unx/OGLTrans_TransitionerImpl.cxx
@@ -26,7 +26,7 @@
*
************************************************************************/
-#define GLX_GLXEXT_PROTOTYPES 1
+// Includes <GL/gl.h>
#include "OGLTrans_TransitionImpl.hxx"
#include <sal/types.h>
@@ -38,6 +38,8 @@
#include <com/sun/star/rendering/RenderingIntent.hpp>
#include <com/sun/star/util/Endianness.hpp>
#include <com/sun/star/animations/TransitionType.hpp>
+#undef IN
+#undef OUT
#include <com/sun/star/animations/TransitionSubType.hpp>
#include <com/sun/star/presentation/XTransitionFactory.hpp>
#include <com/sun/star/presentation/XTransition.hpp>
@@ -63,26 +65,29 @@
#include <boost/noncopyable.hpp>
-#include <GL/gl.h>
-#include <GL/glu.h>
-
-
-#if defined( WNT )
- #define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE
- #define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF
-#elif defined( QUARTZ )
+#if defined( _WIN32 )
+ // OGLTrans_TransitionImpl.hxx already included <prewin.h> and thus <windows.h>
+ #include <GL/glu.h>
+ #include <GL/glext.h>
+ #include <GL/wglext.h>
+#elif defined( MACOSX )
#include "premac.h"
#include <Cocoa/Cocoa.h>
#include "postmac.h"
#elif defined( UNX )
-namespace unx
-{
-#include <X11/keysym.h>
-#include <X11/X.h>
-#include <GL/glx.h>
-#include <GL/glxext.h>
-}
+ #include <GL/glu.h>
+ #include <GL/glext.h>
+
+ namespace unx
+ {
+ #include <X11/keysym.h>
+ #include <X11/X.h>
+ #define GLX_GLXEXT_PROTOTYPES 1
+ #include <GL/glx.h>
+ #include <GL/glxext.h>
+ }
#endif
+
#include <vcl/sysdata.hxx>
#if OSL_DEBUG_LEVEL > 1
@@ -163,6 +168,8 @@ int calcComponentOrderIndex(const uno::Sequence<sal_Int8>& rTags)
return -1;
}
+#ifdef UNX
+
// not thread safe
static bool errorTriggered;
int oglErrorHandler( unx::Display* /*dpy*/, unx::XErrorEvent* /*evnt*/ )
@@ -172,6 +179,8 @@ int oglErrorHandler( unx::Display* /*dpy*/, unx::XErrorEvent* /*evnt*/ )
return 0;
}
+#endif
+
/** This is the Transitioner class for OpenGL 3D transitions in
* slideshow. At the moment, it's Linux only. This class is implicitly
* constructed from XTransitionFactory.
@@ -236,29 +245,30 @@ private:
/// Holds the information of our new child window
struct GLWindow
{
-#if defined( WNT )
- HWND hWnd;
- HDC hDC;
- HGLRC hRC;
-#elif defined( QUARTZ )
+#if defined( _WIN32 )
+ HWND hWnd;
+ HDC hDC;
+ HGLRC hRC;
+#elif defined( MACOSX )
#elif defined( UNX )
- unx::Display* dpy;
- int screen;
- unx::Window win;
+ unx::Display* dpy;
+ int screen;
+ unx::Window win;
#if defined( GLX_VERSION_1_3 ) && defined( GLX_EXT_texture_from_pixmap )
- unx::GLXFBConfig fbc;
+ unx::GLXFBConfig fbc;
#endif
- unx::XVisualInfo* vi;
- unx::GLXContext ctx;
+ unx::XVisualInfo* vi;
+ unx::GLXContext ctx;
+
+ bool HasGLXExtension( const char* name ) { return gluCheckExtension( (const GLubyte*) name, (const GLubyte*) GLXExtensions ); }
+ const char* GLXExtensions;
#endif
unsigned int bpp;
unsigned int Width;
unsigned int Height;
- const char* GLXExtensions;
- const GLubyte* GLExtensions;
+ const GLubyte* GLExtensions;
- bool HasGLXExtension( const char* name ) { return gluCheckExtension( (const GLubyte*) name, (const GLubyte*) GLXExtensions ); }
- bool HasGLExtension( const char* name ) { return gluCheckExtension( (const GLubyte*) name, GLExtensions ); }
+ bool HasGLExtension( const char* name ) { return gluCheckExtension( (const GLubyte*) name, GLExtensions ); }
} GLWin;
/** OpenGL handle to the leaving slide's texture
@@ -293,8 +303,10 @@ private:
bool mbUseEnteringPixmap;
bool mbFreeLeavingPixmap;
bool mbFreeEnteringPixmap;
+#ifdef UNX
unx::Pixmap maLeavingPixmap;
unx::Pixmap maEnteringPixmap;
+#endif
/** the form the raw bytes are in for the bitmaps
*/
@@ -316,17 +328,20 @@ public:
/** GL version
*/
static float cnGLVersion;
- float mnGLXVersion;
- /** Whether Mesa is the OpenGL vendor
- */
- static bool cbMesa;
+#ifdef UNX
+ float mnGLXVersion;
+#endif
/**
- whether the display has GLX extension
+ Whether the display has GLX extension on X11, always true otherwise (?)
*/
static bool cbGLXPresent;
+ /** Whether Mesa is the OpenGL vendor
+ */
+ static bool cbMesa;
+
/**
whether texture from pixmap extension is available
*/
@@ -426,7 +441,7 @@ lcl_createSystemWindow(
bool OGLTransitionerImpl::createWindow( Window* pPWindow )
{
const SystemEnvData* sysData(pPWindow->GetSystemData());
-#if defined( WNT )
+#if defined( _WIN32 )
GLWin.hWnd = sysData->hWnd;
#elif defined( UNX )
GLWin.dpy = reinterpret_cast<unx::Display*>(sysData->pDisplay);
@@ -573,7 +588,7 @@ bool OGLTransitionerImpl::createWindow( Window* pPWindow )
}
#endif
-#if defined( WNT )
+#if defined( _WIN32 )
SystemWindowData winData;
winData.nSize = sizeof(winData);
pWindow=new SystemChildWindow(pPWindow, 0, &winData, sal_False);
@@ -588,7 +603,7 @@ bool OGLTransitionerImpl::createWindow( Window* pPWindow )
pWindow->SetControlForeground();
pWindow->SetControlBackground();
pWindow->EnablePaint(sal_False);
-#if defined( WNT )
+#if defined( _WIN32 )
GLWin.hWnd = sysData->hWnd;
#elif defined( UNX )
GLWin.dpy = reinterpret_cast<unx::Display*>(pChildSysData->pDisplay);
@@ -642,7 +657,7 @@ bool OGLTransitionerImpl::initWindowFromSlideShowView( const Reference< presenta
GLWin.Height = aCanvasArea.Height;
SAL_INFO("slideshow.opengl", "canvas area: " << aCanvasArea.X << "," << aCanvasArea.Y << " - " << aCanvasArea.Width << "x" << aCanvasArea.Height);
-#if defined( WNT )
+#if defined( _WIN32 )
GLWin.hDC = GetDC(GLWin.hWnd);
#elif defined( UNX )
GLWin.ctx = glXCreateContext(GLWin.dpy,
@@ -655,7 +670,7 @@ bool OGLTransitionerImpl::initWindowFromSlideShowView( const Reference< presenta
}
#endif
-#if defined( WNT )
+#if defined( _WIN32 )
PIXELFORMATDESCRIPTOR PixelFormatFront = // PixelFormat Tells Windows How We Want Things To Be
{
sizeof(PIXELFORMATDESCRIPTOR),
@@ -679,7 +694,7 @@ bool OGLTransitionerImpl::initWindowFromSlideShowView( const Reference< presenta
};
int WindowPix = ChoosePixelFormat(GLWin.hDC,&PixelFormatFront);
SetPixelFormat(GLWin.hDC,WindowPix,&PixelFormatFront);
- GLWin.hRC = wglCreateContext(GLWin.hDC);
+ GLWin.hRC = wglCreateContext(GLWin.hDC);
wglMakeCurrent(GLWin.hDC,GLWin.hRC);
#elif defined( UNX )
if( !glXMakeCurrent( GLWin.dpy, GLWin.win, GLWin.ctx ) ) {
@@ -732,7 +747,7 @@ bool OGLTransitionerImpl::initWindowFromSlideShowView( const Reference< presenta
glCullFace(GL_BACK);
glClearColor (0, 0, 0, 0);
glClear(GL_COLOR_BUFFER_BIT);
-#if defined( WNT )
+#if defined( _WIN32 )
SwapBuffers(GLWin.hDC);
#elif defined( UNX )
unx::glXSwapBuffers(GLWin.dpy, GLWin.win);
@@ -786,7 +801,6 @@ void OGLTransitionerImpl::impl_prepareSlides()
mbUseLeavingPixmap = false;
mbUseEnteringPixmap = false;
-#ifdef UNX
#if defined( GLX_VERSION_1_3 ) && defined( GLX_EXT_texture_from_pixmap )
if( mnGLXVersion >= 1.2999 && mbTextureFromPixmap && xLeavingSet.is() && xEnteringSet.is() && mbHasTFPVisual ) {
@@ -862,7 +876,6 @@ void OGLTransitionerImpl::impl_prepareSlides()
}
#endif
-#endif
if( !mbUseLeavingPixmap )
LeavingBytes = mxLeavingBitmap->getData(SlideBitmapLayout,SlideRect);
if( !mbUseEnteringPixmap )
@@ -1229,7 +1242,7 @@ namespace
*pColors++ = vcl::unotools::toByteColor(pIn->Red);
*pColors++ = vcl::unotools::toByteColor(pIn->Green);
*pColors++ = vcl::unotools::toByteColor(pIn->Blue);
- *pColors++ = 255;
+ *pColors++ = -127;
++pIn;
}
return aRes;
@@ -1554,7 +1567,7 @@ void SAL_CALL OGLTransitionerImpl::update( double nTime ) throw (uno::RuntimeExc
if (isDisposed() || !cbGLXPresent || mpTransition->getSettings().mnRequiredGLVersion > cnGLVersion)
return;
-#ifdef WNT
+#ifdef _WIN32
wglMakeCurrent(GLWin.hDC,GLWin.hRC);
#endif
#ifdef UNX
@@ -1570,7 +1583,7 @@ void SAL_CALL OGLTransitionerImpl::update( double nTime ) throw (uno::RuntimeExc
static_cast<double>(GLWin.Width),
static_cast<double>(GLWin.Height) );
-#if defined( WNT )
+#if defined( _WIN32 )
SwapBuffers(GLWin.hDC);
#elif defined( UNX )
unx::glXSwapBuffers(GLWin.dpy, GLWin.win);
@@ -1612,7 +1625,7 @@ void SAL_CALL OGLTransitionerImpl::viewChanged( const Reference< presentation::X
void OGLTransitionerImpl::disposeContextAndWindow()
{
-#if defined( WNT )
+#if defined( _WIN32 )
if (GLWin.hRC)
{
wglMakeCurrent( GLWin.hDC, 0 ); // kill Device Context
@@ -1628,18 +1641,18 @@ void OGLTransitionerImpl::disposeContextAndWindow()
}
glXDestroyContext(GLWin.dpy, GLWin.ctx);
GLWin.ctx = NULL;
+ GLWin.win = 0;
}
#endif
if( pWindow ) {
delete pWindow;
pWindow = NULL;
- GLWin.win = 0;
}
}
void OGLTransitionerImpl::disposeTextures()
{
-#ifdef WNT
+#ifdef _WIN32
wglMakeCurrent(GLWin.hDC,GLWin.hRC);
#endif
#ifdef UNX
@@ -1743,7 +1756,7 @@ OGLTransitionerImpl::OGLTransitionerImpl() :
SlideBitmapLayout(),
SlideSize()
{
-#if defined( WNT )
+#if defined( _WIN32 )
GLWin.hWnd = 0;
#elif defined( UNX )
GLWin.ctx = 0;
diff --git a/slideshow/source/engine/OGLTrans/win/OGLTrans_Shaders.hxx b/slideshow/source/engine/OGLTrans/win/OGLTrans_Shaders.hxx
deleted file mode 100644
index 016f8ac5445a..000000000000
--- a/slideshow/source/engine/OGLTrans/win/OGLTrans_Shaders.hxx
+++ /dev/null
@@ -1,71 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_OGLTRANS_SHADERS_HXX_
-#define INCLUDED_OGLTRANS_SHADERS_HXX_
-
-#define GL_GLEXT_PROTOTYPES 1
-#include <GL/gl.h>
-#include <GL/glext.h>
-
-class OGLShaders {
- static bool Initialize();
- static bool cbInitialized;
-
-public:
-
- static GLuint LinkProgram( const char *vertexShader, const char *fragmentShader );
-
- /** GL shader functions
- */
-#ifdef GL_VERSION_2_0
-
- static PFNGLCREATESHADERPROC glCreateShader;
- static PFNGLSHADERSOURCEPROC glShaderSource;
- static PFNGLCOMPILESHADERPROC glCompileShader;
- static PFNGLGETSHADERIVPROC glGetShaderiv;
- static PFNGLGETSHADERINFOLOGPROC glGetShaderInfoLog;
- static PFNGLDELETESHADERPROC glDeleteShader;
-
- static PFNGLCREATEPROGRAMPROC glCreateProgram;
- static PFNGLATTACHSHADERPROC glAttachShader;
- static PFNGLLINKPROGRAMPROC glLinkProgram;
- static PFNGLGETPROGRAMIVPROC glGetProgramiv;
- static PFNGLGETPROGRAMINFOLOGPROC glGetProgramInfoLog;
- static PFNGLUSEPROGRAMPROC glUseProgram;
- static PFNGLDELETEPROGRAMPROC glDeleteProgram;
-
- static PFNGLGETUNIFORMLOCATIONPROC glGetUniformLocation;
- static PFNGLUNIFORM1IPROC glUniform1i;
- static PFNGLUNIFORM1FPROC glUniform1f;
-#endif
-};
-
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */