1 /*---------------------------------------------------------------------------*
2   Project:  Horizon
3   File:     demo_RenderSystemExt.h
4 
5   Copyright (C)2009-2012 Nintendo Co., Ltd.  All rights reserved.
6 
7   These coded instructions, statements, and computer programs contain
8   proprietary information of Nintendo of America Inc. and/or Nintendo
9   Company Ltd., and are protected by Federal copyright law.  They may
10   not be disclosed to third parties or copied or duplicated in any form,
11   in whole or in part, without the prior written consent of Nintendo.
12 
13   $Rev: 46365 $
14  *---------------------------------------------------------------------------*/
15 
16 #ifndef DEMO_RENDER_SYSTEM_EXT_H_
17 #define DEMO_RENDER_SYSTEM_EXT_H_
18 
19 #include "demo/Render/demo_RenderSystemDrawing.h"
20 
21 namespace demo
22 {
23     class RenderSystemExt : public RenderSystemDrawing
24     {
25     public:
26         RenderSystemExt(void);
27         virtual ~RenderSystemExt(void);
28 
29     public:
30         virtual void Initialize(const uptr fcramAddress, const size_t memorySize,
31             const u32 commandBufferSize = 0x40000, const u32 requestNum = 128,
32             const bool serialRunMode = true,
33             const DisplayBuffersDescription& displayBuffers0Desc = DisplayBuffersDescription::GetDefaultDisplay0Description(),
34             const DisplayBuffersDescription& displayBuffers1Desc = DisplayBuffersDescription::GetDefaultDisplay1Description(),
35             const FrameBufferDescription& frameBuffer0Desc = FrameBufferDescription::GetDefaultDisplay0FrameBufferDescription(),
36             const DisplayBuffersDescription& displayBuffers0ExtDesc = DisplayBuffersDescription::GetDefaultDisplay0ExtDescription(),
37             const bool isFillBlackLCD = true );
38         virtual void Finalize(void);
39     protected:
40         virtual void InitializeLcdDisplay(void);
41 
42     public:
43         void SetLcdMode(const GLenum& lcdMode);
44         GLenum GetLcdMode(void) const;
45         void PrintLcdMode(void) const;
46 
47     public:
48         virtual void SetClearColor(const s32 display, const f32 red, const f32 green, const f32 blue, const f32 alpha);
49         virtual void Clear(const GLbitfield mask = (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT) );
50 
51     public:
52         virtual void SetRenderTarget(const GLenum targetDisplay);
53 
54     public:
55         virtual GLuint GetFramebufferObjectId(const GLenum targetDisplay);
56         virtual GLuint GetRenderbufferObjectId(const GLenum targetDisplay, const GLenum renderBufferType);
57 
58     protected:
59         DisplayBuffersDescription GetDisplay0ExtDescription(void);
60 
61     public:
62         virtual void Transfer(void);
63         virtual void SwapBuffers(void);
64         virtual void WaitVsync(const GLenum targetDisplay);
65 
66     protected:
67         virtual void CheckRenderTarget(void);
68 
69     protected:
70         GLenum m_LcdMode;
71         DisplayBuffers m_DisplayBuffers0Ext;
72 
73         bool m_ChangeLcdMode;
74         bool m_Padding[3];
75     };
76 
77 }
78 
79 #endif
80