Mercurial > hg > Members > e085722 > Cerium
diff Renderer/Engine/polygon_pack.h @ 0:04e28d8d3c6f
first commit
author | Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 08 Nov 2010 01:23:25 +0900 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Renderer/Engine/polygon_pack.h Mon Nov 08 01:23:25 2010 +0900 @@ -0,0 +1,76 @@ +#ifndef INCLUDED_POLYGON_PACK +#define INCLUDED_POLYGON_PACK + +#include "types.h" + +#define MAX_SIZE_TRIANGLE 128 + +typedef struct VertexPack { + float x; + float y; + float z; + float tex_x; + float tex_y; +} VertexPack, *VertexPackPtr; // 20 + +typedef struct NormalPack { + float x; + float y; + float z; +} NormalPack, *NormalPackPtr; // 12 + +typedef struct TriTexInfo { + uint32 *addr; + int width; + int height; + int scale_max; +} TriangleTexInfo, *TriangleTexInfoPtr; // 16 + +typedef struct TrianglePack { + TriTexInfo tex_info; // 16 + VertexPack ver1; // 20 + VertexPack ver2; // 20 + VertexPack ver3; // 20 + NormalPack normal1; // 12 + NormalPack normal2; // 12 + NormalPack normal3; // 12 +} TrianglePack, *TrianglePackPtr; // 112 (16 * 7) + + +typedef struct PolygonPack { + + TrianglePack tri[MAX_SIZE_TRIANGLE]; + + struct POLYGON_info { + int size; + int light_pos[3]; + int light_rgb[3]; + }info; + + PolygonPack* next; + + void init(void) { + info.size = 0; + next = 0; + } + + void clear(void) { + PolygonPack *q = 0; + PolygonPack *q1 = 0; + + q = this->next; + while (q) { + q1 = q->next; + delete(q); + q = q1; + } + this->init(); + } +} PolygonPack, *PolygonPackPtr; // 4*7 + 76*128 + 4 = 9760 なんやかんやで 14368 みたい。 + +typedef struct PolygonPackList { + int size; + PolygonPack *list; +} PolygonPackList; + +#endif