亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? milkshapemodel.cpp

?? 在特定的地形上進行導彈飛行模擬。涉及到地形的快速
?? CPP
字號:
// MilkshapeModel.cpp: implementation of the MilkshapeModel class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "MissileTest.h"
#include "MilkshapeModel.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
#include <fstream.h>
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

MilkshapeModel::MilkshapeModel()
{

}

MilkshapeModel::~MilkshapeModel()
{

}

//	MS3D 數據結構 
#ifdef _MSC_VER
#	pragma pack( push, packing )
#	pragma pack( 1 )
#	define PACK_STRUCT
#elif defined( __GNUC__ )
#	define PACK_STRUCT	__attribute__((packed))
#else
#	error you must byte-align these structures with the appropriate compiler directives
#endif

typedef unsigned char byte;
typedef unsigned short word;

// 文件頭
struct MS3DHeader
{
	char m_ID[10];
	int m_version;
} PACK_STRUCT;

// 頂點信息
struct MS3DVertex
{
	byte m_flags;
	float m_vertex[3];
	char m_boneID;
	byte m_refCount;
} PACK_STRUCT;

// 三角形信息
struct MS3DTriangle
{
	word m_flags;
	word m_vertexIndices[3];
	float m_vertexNormals[3][3];
	float m_s[3], m_t[3];
	byte m_smoothingGroup;
	byte m_groupIndex;
} PACK_STRUCT;

// 材質信息
struct MS3DMaterial
{
    char m_name[32];
    float m_ambient[4];
    float m_diffuse[4];
    float m_specular[4];
    float m_emissive[4];
    float m_shininess;	
    float m_transparency;	
    byte m_mode;	
    char m_texture[128];
    char m_alphamap[128];
} PACK_STRUCT;

//	關節連接信息
struct MS3DJoint
{
	byte m_flags;
	char m_name[32];
	char m_parentName[32];
	float m_rotation[3];
	float m_translation[3];
	word m_numRotationKeyframes;
	word m_numTranslationKeyframes;
} PACK_STRUCT;

// 關鍵幀數據
struct MS3DKeyframe
{
	float m_time;
	float m_parameter[3];
} PACK_STRUCT;

// 缺省對齊
#ifdef _MSC_VER
#	pragma pack( pop, packing )
#endif

#undef PACK_STRUCT

bool MilkshapeModel::loadModelData( const char *filename )
{
	ifstream inputFile( filename, ios::in | ios::binary | ios::nocreate );
	if ( inputFile.fail())
		return false;	// "不能打開模型文件."

	inputFile.seekg( 0, ios::end );
	long fileSize = inputFile.tellg();
	inputFile.seekg( 0, ios::beg );

	byte *pBuffer = new byte[fileSize];
	inputFile.read( pBuffer, fileSize );
	inputFile.close();

	const byte *pPtr = pBuffer;
	MS3DHeader *pHeader = ( MS3DHeader* )pPtr;
	pPtr += sizeof( MS3DHeader );

	if ( strncmp( pHeader->m_ID, "MS3D000000", 10 ) != 0 )
		return false; // "不是一個合法的Milkshape3D模型文件."

	if ( pHeader->m_version < 3 || pHeader->m_version > 4 )
		return false; // "只能處理Milkshape3D 1.3 和 1.4版本." );

	int nVertices = *( word* )pPtr; 
	m_numVertices = nVertices;
	m_pVertices = new Vertex[nVertices];
	pPtr += sizeof( word );

	int i;
	for ( i = 0; i < nVertices; i++ )
	{
		MS3DVertex *pVertex = ( MS3DVertex* )pPtr;
		m_pVertices[i].m_boneID = pVertex->m_boneID;
		memcpy( m_pVertices[i].m_location, pVertex->m_vertex, sizeof( float )*3 );
		pPtr += sizeof( MS3DVertex );
	}

	int nTriangles = *( word* )pPtr;
	m_numTriangles = nTriangles;
	m_pTriangles = new Triangle[nTriangles];
	pPtr += sizeof( word );

	for ( i = 0; i < nTriangles; i++ )
	{
		MS3DTriangle *pTriangle = ( MS3DTriangle* )pPtr;
		int vertexIndices[3] = { pTriangle->m_vertexIndices[0], pTriangle->m_vertexIndices[1], pTriangle->m_vertexIndices[2] };
		float t[3] = { 1.0f-pTriangle->m_t[0], 1.0f-pTriangle->m_t[1], 1.0f-pTriangle->m_t[2] };
		memcpy( m_pTriangles[i].m_vertexNormals, pTriangle->m_vertexNormals, sizeof( float )*3*3 );
		memcpy( m_pTriangles[i].m_s, pTriangle->m_s, sizeof( float )*3 );
		memcpy( m_pTriangles[i].m_t, t, sizeof( float )*3 );
		memcpy( m_pTriangles[i].m_vertexIndices, vertexIndices, sizeof( int )*3 );
		pPtr += sizeof( MS3DTriangle );
	}

	int nGroups = *( word* )pPtr;
	m_numMeshes = nGroups;
	m_pMeshes = new Mesh[nGroups];
	pPtr += sizeof( word );
	for ( i = 0; i < nGroups; i++ )
	{
		pPtr += sizeof( byte );	// flags
		pPtr += 32;				// name

		word nTriangles = *( word* )pPtr;
		pPtr += sizeof( word );
		int *pTriangleIndices = new int[nTriangles];
		for ( int j = 0; j < nTriangles; j++ )
		{
			pTriangleIndices[j] = *( word* )pPtr;
			pPtr += sizeof( word );
		}

		char materialIndex = *( char* )pPtr;
		pPtr += sizeof( char );
	
		m_pMeshes[i].m_materialIndex = materialIndex;
		m_pMeshes[i].m_numTriangles = nTriangles;
		m_pMeshes[i].m_pTriangleIndices = pTriangleIndices;
	}

	int nMaterials = *( word* )pPtr;
	m_numMaterials = nMaterials;
	m_pMaterials = new Material[nMaterials];
	pPtr += sizeof( word );
	for ( i = 0; i < nMaterials; i++ )
	{
		MS3DMaterial *pMaterial = ( MS3DMaterial* )pPtr;
		memcpy( m_pMaterials[i].m_ambient, pMaterial->m_ambient, sizeof( float )*4 );
		memcpy( m_pMaterials[i].m_diffuse, pMaterial->m_diffuse, sizeof( float )*4 );
		memcpy( m_pMaterials[i].m_specular, pMaterial->m_specular, sizeof( float )*4 );
		memcpy( m_pMaterials[i].m_emissive, pMaterial->m_emissive, sizeof( float )*4 );
		m_pMaterials[i].m_shininess = pMaterial->m_shininess;
		m_pMaterials[i].m_pTextureFilename = new char[strlen( pMaterial->m_texture )+1];
		strcpy( m_pMaterials[i].m_pTextureFilename, pMaterial->m_texture );
		pPtr += sizeof( MS3DMaterial );
	}

	reloadTextures();

	delete[] pBuffer;

	return true;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线看不卡av| 色综合夜色一区| 亚洲h动漫在线| 一区二区三区精品视频| 亚洲欧美日韩电影| 一区二区三区日本| 亚洲电影视频在线| 日韩精彩视频在线观看| 三级欧美韩日大片在线看| 午夜成人免费电影| 久久国产日韩欧美精品| 国产又黄又大久久| 成人小视频在线| av欧美精品.com| 欧日韩精品视频| 日韩欧美国产1| 久久综合九色综合欧美98| 欧美精彩视频一区二区三区| 亚洲国产精华液网站w| 亚洲特级片在线| 日韩精品免费专区| 国产精品一区专区| 91老师片黄在线观看| 欧美人体做爰大胆视频| 久久综合九色欧美综合狠狠| 国产精品久久久久三级| 亚洲制服欧美中文字幕中文字幕| 亚洲国产毛片aaaaa无费看 | 99re热这里只有精品免费视频| 成人丝袜18视频在线观看| 色综合中文综合网| 欧美午夜精品理论片a级按摩| 欧美日韩国产乱码电影| 久久久久9999亚洲精品| 亚洲人精品一区| 开心九九激情九九欧美日韩精美视频电影 | 国产视频一区在线播放| 亚洲日本中文字幕区| 青青青爽久久午夜综合久久午夜| 国产乱码精品一区二区三区忘忧草 | 国产精品一级黄| 欧美中文字幕不卡| 国产三级一区二区三区| 亚洲一区在线观看免费| 高清免费成人av| 91精品国产一区二区| 亚洲天堂久久久久久久| 韩国毛片一区二区三区| 欧美剧在线免费观看网站 | 91丨国产丨九色丨pron| 欧美一级高清大全免费观看| 亚洲欧美一区二区三区极速播放| 久久草av在线| 欧美精品久久久久久久多人混战| 中文字幕欧美日本乱码一线二线 | 国产在线精品一区二区不卡了| 91亚洲精品乱码久久久久久蜜桃| 久久色在线视频| 日本一道高清亚洲日美韩| 91无套直看片红桃| 欧美国产一区在线| 国产在线不卡一区| 欧美电影免费观看高清完整版在线观看 | 久久精品国产在热久久| 欧美美女直播网站| 亚洲国产乱码最新视频| 在线精品视频一区二区三四| 国产精品久久久久久久久动漫| 国产麻豆视频精品| 日韩精品中文字幕一区| 丝袜国产日韩另类美女| 欧美少妇xxx| 亚州成人在线电影| 欧美年轻男男videosbes| 亚洲另类在线一区| 在线看一区二区| 亚洲影院在线观看| 欧美怡红院视频| 亚洲电影一区二区三区| 色成人在线视频| 亚洲国产一二三| 欧美日韩国产美| 蜜芽一区二区三区| 久久老女人爱爱| 国产成人三级在线观看| 国产精品日产欧美久久久久| 成人夜色视频网站在线观看| 国产精品人妖ts系列视频| av动漫一区二区| 亚洲一区二区欧美| 在线播放日韩导航| 精品一区二区三区不卡| 久久精品一区二区三区不卡牛牛 | 国模冰冰炮一区二区| 久久嫩草精品久久久精品| 国产成人精品影院| 亚洲少妇最新在线视频| 欧美伦理视频网站| 狠狠色狠狠色综合| 欧美激情一区二区三区蜜桃视频| 成人高清免费在线播放| 亚洲一区二区视频在线| 日韩女优av电影在线观看| 国产精品亚洲成人| 亚洲精品日韩一| 日韩欧美高清一区| 91女人视频在线观看| 欧美aaaaaa午夜精品| 欧美激情一区二区三区蜜桃视频 | 国产嫩草影院久久久久| 欧美亚一区二区| 国产乱码一区二区三区| 亚洲精品ww久久久久久p站| 欧美一级日韩不卡播放免费| a亚洲天堂av| 美女视频黄久久| 亚洲精品第一国产综合野| 精品国产乱码久久久久久蜜臀| 91亚洲精品乱码久久久久久蜜桃| 七七婷婷婷婷精品国产| 亚洲美女淫视频| 久久日韩精品一区二区五区| 欧美最新大片在线看| 国产1区2区3区精品美女| 日本不卡不码高清免费观看| 国产精品久久久久久久久图文区| 在线不卡a资源高清| 色综合天天综合在线视频| 蜜臀91精品一区二区三区 | 视频一区中文字幕国产| 亚洲视频中文字幕| 久久久亚洲国产美女国产盗摄| 欧美日韩三级一区| 99久久国产综合精品女不卡| 紧缚捆绑精品一区二区| 视频一区视频二区在线观看| |精品福利一区二区三区| 欧美大度的电影原声| 欧美日韩亚洲综合| 日本道精品一区二区三区| 不卡的av电影| 成人午夜电影小说| 国产九九视频一区二区三区| 男人操女人的视频在线观看欧美| 亚洲图片欧美色图| 一区二区不卡在线视频 午夜欧美不卡在 | 欧美日韩在线直播| 欧美亚洲动漫精品| 欧美午夜宅男影院| 精品视频1区2区3区| 欧美午夜在线一二页| 欧美三级在线视频| 在线观看日韩高清av| 在线观看中文字幕不卡| 91久久精品网| 欧美欧美欧美欧美| 欧美一区二区二区| 日韩欧美不卡在线观看视频| 欧美大片在线观看一区二区| 日韩免费成人网| 久久综合九色综合欧美98| 久久久精品2019中文字幕之3| www国产精品av| 久久精品一区二区三区不卡牛牛| 国产亚洲一本大道中文在线| 欧美经典三级视频一区二区三区| 国产精品乱人伦中文| 中文字幕制服丝袜一区二区三区 | 日韩高清欧美激情| 久久国产生活片100| 国产黄色精品视频| 91视视频在线直接观看在线看网页在线看 | 另类小说视频一区二区| 国产露脸91国语对白| 99re热这里只有精品免费视频| 欧美在线你懂得| 欧美一区二区三区在线观看| 久久久一区二区三区捆绑**| 国产精品美女视频| 午夜精品久久久久久久99樱桃| 麻豆免费精品视频| 成人av先锋影音| 欧美精品v国产精品v日韩精品| 精品国产一区二区三区久久影院 | 天天做天天摸天天爽国产一区| 人人精品人人爱| 国产福利91精品一区二区三区| 91天堂素人约啪| 精品少妇一区二区三区| 日韩美女视频一区二区| 美美哒免费高清在线观看视频一区二区 | 精品精品国产高清a毛片牛牛 | 欧美四级电影在线观看| 精品欧美黑人一区二区三区| 中文字幕色av一区二区三区| 日本欧美一区二区在线观看| av爱爱亚洲一区| 亚洲精品一区在线观看| 亚洲国产精品天堂| 成人午夜在线视频|