• Main Page
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

src/render/header/Render.h

Go to the documentation of this file.
00001 #pragma once
00002 
00003 #include <stdio.h>
00004 #include <windows.h>
00005 #include <vector>
00006 #include <math.h>
00007 
00008 #define PI_OVER_360 0.0087266462599716478846184538424431
00009 
00010 //#define MAX_VERTICES 24
00011 //#define MAX_INDICES 36
00012 
00013 #define STARTING_OBJECT_COUNT 1
00014 #define POSITION 0
00015 #define NORMAL 1
00016 #define TANGENT 2
00017 #define BITANGENT 3
00018 #define COLOR 4
00019 #define UV 5
00020 #define BONES 6
00021 #define WEIGHTS 7
00022 //------------------------------
00023 #define ATTRIBUTE_COUNT 8
00024 
00025 #define MAX_ACTIVE_LIGHTS 4
00026 
00027 class Render : public IRender
00028 {
00029 public:
00030         Render(void);
00031         virtual ~Render(void);
00032 
00033         bool init(HWND hwnd, int width, int heigth, RenderDesc& desc);
00034         void uninit(void);
00035 
00036         void keepCurrentGeometry(void);
00037         void resetCurrentGeometry(void);
00038 
00039         pIGeometry createGeometry(MeshData& meshData);
00040         pITexture createTexture(TextureData& textureData);
00041         void createSkyBox(TextureData&, TextureData&, TextureData&, TextureData&, TextureData&, TextureData&);
00042         pIControl createControl(pIGeometry geometry, pITexture texture);
00043         pIControl createButton(pIGeometry geometry, pITexture texture, void callback(pIControl));
00044 
00045         void freeTexture(pITexture& texture);
00046         void freeGeometry(pIGeometry& geometry);
00047 
00048         pInstance createDrawCall(pITexture texture, pIGeometry geometry, pIBody body);
00049         pInstance createColorDrawCall(pIGeometry geometry, pIBody body);
00050         void createGuiDrawCall(pIControl control);
00051         void clear(void);
00052         void update(Camera& camera);
00053         void updateScreenSize(int width, int height);
00054 
00055         void toggleGui();
00056         bool guiIsShown() { return m_guiShown; }
00057         void setLight(int index, LightData& lightData);
00058 
00059         void setEnableBlending(bool b) { m_enableBlending = b; }
00060         bool getEnableBlending(void) { return m_enableBlending; }
00061         void setEnableCulling(bool b) { m_enableCulling = b; }
00062         bool getEnableCulling(void) { return m_enableCulling; }
00063         void setEnableWireframe(bool b) { m_enableWireframe = b; }
00064         bool getEnableWireframe(void) { return m_enableWireframe; }
00065         void setEnableMipmap(bool b);
00066         bool getEnableMipmap() { return m_enableMipmap; } 
00067         void setEnableLinearTexture(bool b);
00068         bool getEnableLinearTexture() {return m_enableLinearTexture; }
00069 
00070 protected:
00071         virtual void initGLEW(void);
00072         virtual void reserveDeviceMemory(int width, int height, RenderDesc& desc);
00073         virtual const float4x4 getGuiMatrix(int width, int height);
00074 
00075 private:
00076         GLuint m_vertexArray;
00077         GLuint m_vertexBuffer;
00078         GLuint m_indexBuffer;
00079         GLuint m_colorTexture;
00080         GLuint m_detailTexture;
00081         GLuint m_skyBox;
00082         GLuint m_sharpTexture;
00083         GLuint m_blurTexture;
00084         GLuint renderbufferDepth;
00085         GLuint framebufferSharp;
00086         GLuint framebufferBlur;
00087 
00088         int m_vertexSize;
00089         int m_vertexCount;
00090         int m_indexCount;
00091         int m_textureCount;
00092         
00093         RenderDesc* renderDesc;
00094 
00095         struct {
00096                 Shader shader;
00097                 Uniform gui;
00098                 Uniform guiTexIdx;
00099                 Uniform guiColor;
00100                 Uniform guiUVIndex;
00101         } gui;
00102 
00103         struct {
00104                 Shader shader;
00105                 Uniform modelViewMat;
00106                 Uniform projMat;
00107         } depthOnly;
00108 
00109         struct {
00110                 Shader shader;
00111                 Uniform radius;
00112                 Uniform texture;
00113         } blur;
00114 
00115         struct {
00116                 Shader shader;
00117                 Uniform dof;
00118                 Uniform sharp;
00119                 Uniform blured;
00120         } depthOfField;
00121 
00122         struct {
00123                 Shader shader;
00124                 Uniform modelViewMat;
00125                 Uniform projMat;
00126                 Uniform camPosition;
00127                 Uniform skybox;
00128         } skybox;
00129 
00130         struct {
00131                 Shader shader;
00132                 Uniform viewMat;
00133                 Uniform modelViewMat;
00134                 Uniform normalMat;
00135                 Uniform projMat;
00136                 Uniform texIdx;
00137                 Uniform lightPositions;
00138                 Uniform lightColors;
00139                 Uniform colorArray;
00140                 Uniform detailArray;
00141                 Uniform cameraPosition;
00142                 float4 lightPositionArray[MAX_ACTIVE_LIGHTS];
00143                 float4 lightColorArray[MAX_ACTIVE_LIGHTS];
00144         } parallax;
00145 
00146         struct {
00147                 Shader shader;
00148                 Uniform modelViewMat;
00149                 Uniform normalMat;
00150                 Uniform projMat;
00151                 Uniform camPosition;
00152                 Uniform environment;
00153         } glass;
00154 
00155         int m_dRenderCount;
00156         int m_dRenderColorCount;
00157         int m_keepGeometryVertices;
00158         int m_keepGeometryIndices;
00159         int m_keepRenderCount;
00160         int m_keepColorRenderCount;
00161 
00162         HWND m_hwnd;
00163         HDC m_hdc;
00164         HGLRC m_RC;
00165 
00166         DrawCall* m_drawList;
00167         DrawCall* m_drawColorList;
00168         pIControl* m_guiDrawList;
00169 
00170         int m_numGuiObjects;
00171         int m_keepGuiCount;
00172 
00173         bool m_guiShown;
00174         bool m_enableBlending;
00175         bool m_enableCulling;
00176         bool m_enableWireframe;
00177         bool m_enableMipmap;
00178         bool m_enableLinearTexture;
00179 
00180         pGeometry rectGeom;
00181         pGeometry cubeGeom;
00182         Vertex defaultRectVertices[4];
00183         ushort defaultRectIndices[6];
00184         Vertex defaultCubeVertices[8];
00185         ushort defaultCubeIndices[36];
00186 
00187 
00188 
00189 };

Generated on Fri Jun 18 2010 17:48:39 for Cannonball by  doxygen 1.7.0