view Renderer/Engine/polygon_pack.h @ 638:671fca057ad3

hmmmm
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Thu, 19 Nov 2009 18:18:20 +0900
parents 735f76483bb2
children 649e4cb84683
line wrap: on
line source

#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;
    VertexPack ver1;
    VertexPack ver2;
    VertexPack ver3;
    NormalPack normal1;
    NormalPack normal2;
    NormalPack normal3;
} TrianglePack, *TrianglePackPtr;


typedef struct PolygonPack {
    struct POLYGON_info {
	int size;
	int light_pos[3];
	int light_rgb[3];
    }info;

    TrianglePack tri[MAX_SIZE_TRIANGLE];

    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

typedef struct PolygonPackList {
    int size;
    PolygonPack *list;
} PolygonPackList;

#endif