Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008 #ifndef __SP_RENDERCONTEXT_OPENGL_H__
00009 #define __SP_RENDERCONTEXT_OPENGL_H__
00010
00011
00012 #include "Base/spStandard.hpp"
00013
00014 #if defined(SP_COMPILE_WITH_OPENGL)
00015
00016
00017 #include "RenderSystem/spDesktopRenderContext.hpp"
00018
00019 #if defined(SP_PLATFORM_MACOSX)
00020 # include <OpenGL/gl.h>
00021 #else
00022 # include <GL/gl.h>
00023 #endif
00024
00025 #if defined(SP_PLATFORM_WINDOWS)
00026 # include <windows.h>
00027 # include <GL/wglext.h>
00028 #elif defined(SP_PLATFORM_LINUX)
00029 # include <X11/X.h>
00030 # include <X11/Xlib.h>
00031 # include <X11/Xutil.h>
00032 # include <X11/extensions/xf86vmode.h>
00033 # include <GL/glx.h>
00034 #endif
00035
00036
00037 namespace sp
00038 {
00039 namespace video
00040 {
00041
00042
00044 class SP_EXPORT OpenGLRenderContext : public DesktopRenderContext
00045 {
00046
00047 public:
00048
00049 OpenGLRenderContext();
00050 ~OpenGLRenderContext();
00051
00052
00053
00054 bool openGraphicsScreen(
00055 void* ParentWindow, const dim::size2di &Resolution, const io::stringc &Title,
00056 s32 ColorDepth, bool isFullscreen, const SDeviceFlags &Flags
00057 );
00058 void closeGraphicsScreen();
00059
00060 void flipBuffers();
00061
00062 bool activate();
00063 bool deactivate();
00064
00065 SharedRenderContext* createSharedContext();
00066
00067 #ifdef SP_PLATFORM_WINDOWS
00068 void setFullscreen(bool Enable);
00069 void setResolution(const dim::size2di &Resolution);
00070 #endif
00071
00072 void setVsync(bool Enable);
00073
00074 private:
00075
00076 friend class OpenGLSharedRenderContext;
00077
00078
00079
00080 bool createRenderContext();
00081 void releaseRenderContext();
00082
00083 bool switchFullscreenMode(bool isFullscreen);
00084
00085 #if defined(SP_PLATFORM_WINDOWS)
00086
00087 bool getGLPixelFormatExt() const;
00088
00089 void clearPixelFormatAA();
00090 bool selectPixelFormat();
00091 bool setupAntiAliasing();
00092 void deleteContextAndWindow();
00093
00094 #endif
00095
00096 void initRenderStates();
00097
00098
00099
00100 #if defined(SP_PLATFORM_WINDOWS)
00101
00102 static const u32 PIXELFORMATAA_COUNT = 8;
00103
00104 HGLRC RenderContext_;
00105
00106 s32 PixelFormat_, MultiSamplePixelFormats_[PIXELFORMATAA_COUNT];
00107 u32 NumPixelFormatAA_;
00108
00109 #elif defined(SP_PLATFORM_LINUX)
00110
00111 GLXContext RenderContext_;
00112
00113 #endif
00114
00115 };
00116
00117
00118 }
00119
00120 }
00121
00122
00123 #endif
00124
00125 #endif
00126
00127
00128
00129