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