Rice Video Plugin for GLES1.1
[mupen64plus-pandora.git] / source / rice_gles / src / OGLGraphicsContext.h
diff --git a/source/rice_gles/src/OGLGraphicsContext.h b/source/rice_gles/src/OGLGraphicsContext.h
new file mode 100644 (file)
index 0000000..ce05219
--- /dev/null
@@ -0,0 +1,92 @@
+/*
+Copyright (C) 2003 Rice1964
+
+This program 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.
+
+This program 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 this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*/
+
+#ifndef _OGL_CONTEXT_H_
+#define _OGL_CONTEXT_H_
+
+#include "typedefs.h"
+#include "GraphicsContext.h"
+
+class COGLGraphicsContext : public CGraphicsContext
+{
+    friend class OGLRender;
+    friend class COGLRenderTexture;
+public:
+    virtual ~COGLGraphicsContext();
+
+    bool Initialize(uint32 dwWidth, uint32 dwHeight, BOOL bWindowed );
+    bool ResizeInitialize(uint32 dwWidth, uint32 dwHeight, BOOL bWindowed );
+    void CleanUp();
+    void Clear(ClearFlag dwFlags, uint32 color=0xFF000000, float depth=1.0f);
+
+    void UpdateFrame(bool swaponly=false);
+    int ToggleFullscreen();     // return 0 as the result is windowed
+
+    bool IsExtensionSupported(const char* pExtName);
+    bool IsWglExtensionSupported(const char* pExtName);
+    static void InitDeviceParameters();
+
+    //Get methods (TODO, remove all friend class and use get methods instead)
+    bool IsSupportAnisotropicFiltering();
+    int  getMaxAnisotropicFiltering();
+
+protected:
+    friend class OGLDeviceBuilder;
+    COGLGraphicsContext();
+    void InitState(void);
+    void InitOGLExtension(void);
+    bool SetFullscreenMode();
+    bool SetWindowMode();
+
+    // Important OGL extension features
+    bool    m_bSupportMultiTexture;
+    bool    m_bSupportTextureEnvCombine;
+    bool    m_bSupportSeparateSpecularColor;
+    bool    m_bSupportSecondColor;
+    bool    m_bSupportFogCoord;
+    bool    m_bSupportTextureObject;
+
+    // Optional OGL extension features;
+    bool    m_bSupportRescaleNormal;
+    bool    m_bSupportLODBias;
+    bool    m_bSupportAnisotropicFiltering;
+    int     m_maxAnisotropicFiltering;
+
+    // Nvidia OGL only features
+    bool    m_bSupportTextureMirrorRepeat;
+    bool    m_bSupportTextureLOD;
+    bool    m_bSupportNVRegisterCombiner;
+    bool    m_bSupportBlendColor;
+    bool    m_bSupportBlendSubtract;
+    bool    m_bSupportNVTextureEnvCombine4;
+    
+    // Minimal requirements, I will even not check them at runtime
+    //bool  m_bSupportTextureEnvAdd;
+    //bool  m_bSupportVertexArray;
+
+    const unsigned char*    m_pVendorStr;
+    const unsigned char*    m_pRenderStr;
+    const unsigned char*    m_pExtensionStr;
+    const char* m_pWglExtensionStr;
+    const unsigned char*    m_pVersionStr;
+};
+
+#endif
+
+
+