0001:
0002: #include <d3d9.h>
0003: #include <d3dx9.h>
0004:
0005:
0006: #ifndef _RENDER_H_
0007: #define _RENDER_H_
0008:
0009: namespace Render {
0010:
0011:
0012:
0013:
0014: #if 0
0015: enum{
0016: RENDER_WIDTH = 32,
0017: RENDER_HEIGHT = 32,
0018: };
0019: #else
0020: #if 1
0021: enum{
0022: RENDER_WIDTH = 256,
0023: RENDER_HEIGHT = 256,
0024: };
0025: #else
0026: enum{
0027: RENDER_WIDTH = 512,
0028: RENDER_HEIGHT = 512,
0029: };
0030: #endif
0031:
0032: #endif
0033:
0034:
0035:
0036:
0037: void Init();
0038: void Delete();
0039: void Render();
0040: char *GetDataPointer();
0041:
0042:
0043:
0044:
0045: enum {
0046: OBJ_TYPE_SPHERE = 0,
0047: OBJ_TYPE_TRIANGLE,
0048: };
0049:
0050:
0051:
0052:
0053:
0054: typedef struct{
0055: float COLOR_AMB[4];
0056: float COLOR_DIF[4];
0057: float COLOR_SPE[4];
0058: float speq_power;
0059: }Material;
0060:
0061: typedef struct{
0062: int type;
0063:
0064: Material material;
0065:
0066: struct{
0067:
0068: float x0[3];
0069: float x1[3];
0070: float x2[3];
0071: } triangle;
0072: struct {
0073:
0074: float center[3];
0075: float radius;
0076: } sphere;
0077:
0078: }OBJ_DATA;
0079:
0080:
0081: class CObject
0082: {
0083: public:
0084: enum {
0085: INFINTY_DIST = 10000,
0086: };
0087: int m_type;
0088: Material m_material;
0089:
0090:
0091: void Init(OBJ_DATA *pData);
0092:
0093: float IsAcross(D3DXVECTOR4 *n, D3DXVECTOR4 *p, const D3DXVECTOR4 *x, const D3DXVECTOR4 *v){return INFINTY_DIST;}
0094:
0095: D3DXVECTOR3 *GetColor(D3DXVECTOR3 *dest, float LN, float HN );
0096: };
0097:
0098:
0099:
0100: class CSphere : public CObject
0101: {
0102: private:
0103: D3DXVECTOR4 center;
0104: float radius_sq;
0105:
0106: public:
0107: CSphere();
0108:
0109: void Init(OBJ_DATA *pData);
0110: float IsAcross(D3DXVECTOR4 *n, D3DXVECTOR4 *p, const D3DXVECTOR4 *x, const D3DXVECTOR4 *v);
0111: };
0112:
0113:
0114:
0115:
0116: class CTriangle : public CObject
0117: {
0118: private:
0119: D3DXVECTOR4 pos[3];
0120: D3DXVECTOR4 normal;
0121:
0122: public:
0123: CTriangle();
0124:
0125: void Init(OBJ_DATA *pData);
0126: float IsAcross(D3DXVECTOR4 *n, D3DXVECTOR4 *p, const D3DXVECTOR4 *x, const D3DXVECTOR4 *v);
0127: };
0128:
0129: };
0130:
0131: #endif
0132: