Rice GLES2 (from mupen64plus-ae) plugin. Compile but doesn't works well on the OpenPa...
[mupen64plus-pandora.git] / source / gles2rice / src / GraphicsContext.h
CommitLineData
292f9317 1/*
2Copyright (C) 2003 Rice1964
3
4This program is free software; you can redistribute it and/or
5modify it under the terms of the GNU General Public License
6as published by the Free Software Foundation; either version 2
7of the License, or (at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program; if not, write to the Free Software
16Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
17
18*/
19
20#ifndef GFXCONTEXT_H
21#define GFXCONTEXT_H
22
23#include "typedefs.h"
24#include "CritSect.h"
25
26enum ClearFlag
27{
28 CLEAR_COLOR_BUFFER=0x01,
29 CLEAR_DEPTH_BUFFER=0x02,
30 CLEAR_COLOR_AND_DEPTH_BUFFER=0x03,
31};
32
33
34typedef struct
35{
36 uint32 addr; //N64 RDRAM address
37 uint32 size; //N64 buffer size
38 uint32 format; //N64 format
39 uint32 width;
40 uint32 height;
41} TextureBufferShortInfo;
42
43
44// This class basically provides an extra level of security for our
45// multithreaded code. Threads can Grab the CGraphicsContext to prevent
46// other threads from changing/releasing any of the pointers while it is
47// running.
48
49// It is based on CCritSect for Lock() and Unlock()
50
51class CGraphicsContext : public CCritSect
52{
53 friend class CDeviceBuilder;
54
55public:
56 bool Ready() { return m_bReady; }
57 bool IsWindowed() {return m_bWindowed;}
58
59 virtual bool Initialize(uint32 dwWidth, uint32 dwHeight, BOOL bWindowed );
60 virtual bool ResizeInitialize(uint32 dwWidth, uint32 dwHeight, BOOL bWindowed );
61 virtual void CleanUp();
62
63 virtual void Clear(ClearFlag flags, uint32 color=0xFF000000, float depth=1.0f) = 0;
64 virtual void UpdateFrame(bool swaponly=false) = 0;
65 virtual int ToggleFullscreen()=0; // return 0 as the result is windowed
66
67 static void InitWindowInfo();
68 static void InitDeviceParameters();
69
70 bool m_supportTextureMirror;
71
72public:
73 static int m_maxFSAA;
74 static int m_maxAnisotropy;
75
76protected:
77 static uint32 m_dwWindowStyle; // Saved window style for mode switches
78 static uint32 m_dwWindowExStyle; // Saved window style for mode switches
79 static uint32 m_dwStatusWindowStyle; // Saved window style for mode switches
80
81 static bool m_deviceCapsIsInitialized;
82
83 bool m_bReady;
84 bool m_bActive;
85
86 bool m_bWindowed;
87 RECT m_rcWindowBounds;
88
89 char m_strDeviceStats[256];
90
91 virtual ~CGraphicsContext();
92 CGraphicsContext();
93
94public:
95 static CGraphicsContext *g_pGraphicsContext;
96 static CGraphicsContext * Get(void);
97 inline const char* GetDeviceStr() {return m_strDeviceStats;}
98 static bool needCleanScene;
99};
100
101#endif
102