00001
00005 #pragma once
00006 #include <D3D10.h>
00007 #include <D3DX10.h>
00008 #include "vertexformats.h"
00009 #include "shader.h"
00010
00011 class D3D
00012 {
00013 private:
00014 static int createRenderTargetViews();
00015 static int findAALevel();
00016 static bool initShaders();
00017
00018 public:
00019 enum ShaderName {SHADER_TILE,SHADER_GOURAUDPOLYGON,SHADER_COMPLEXSURFACE,SHADER_FOGSURFACE,SHADER_FIRSTPASS,SHADER_HDR,SHADER_FINALPASS,DUMMY_NUM_SHADERS};
00020
00021
00025
00026
00028 static struct Options
00029 {
00030 int samples;
00031 int VSync;
00032 int aniso;
00033 int LODBias;
00034 int POM;
00035 int bumpMapping;
00036 int alphaToCoverage;
00037 float zNear;
00038 int classicLighting;
00039 };
00040
00043 static int init(HWND hwnd,D3D::Options &createOptions);
00044 static void uninit();
00045 static int resize(int X, int Y, bool fullScreen);
00046 static ID3D10Device *getDevice();
00047 static DXGI_FORMAT getDrawPassFormat();
00049
00052 static void newFrame(float time);
00054
00057 static void render();
00058 static void postprocess();
00059 static void present();
00061
00062
00063
00066 static void switchToShader(int index);
00067 static Shader* getShader(int index);
00068 static void setViewPort(int X, int Y, int left, int top);
00069 static void setFlags(int flags, int d3dflags);
00071
00074 static void flash(Vec4 &color);
00075 static TCHAR *getModes();
00076 static void getScreenshot(Vec4_byte* buf);
00077 static void setBrightness(float brightness);
00079 };