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

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

?? 3dsfile.cpp

?? 通過vc++編程實現3DS格式的模型載入
?? CPP
字號:
//=========================================================================
/**
*  @file      3DSFile.cpp
*
*  項目描述: 3DS文件載入
*  文件描述:  具體實例類 
*  適用平臺: Windows98/2000/NT/XP
*  
*  作者:     WWBOSS
*  電子郵件:  wwboss123@gmail.com
*  創建日期: 2006-09-13	
*  修改日期: 2006-12-02
*
*  在這個類中您必須重載如下幾個虛函數
*																								
*	virtual bool Init();														
*		執行所有的初始化工作,如果成功函數返回true							
*																			
*	virtual void Uninit();													
*		執行所有的卸載工作										
*																			
*	virtual void Update(DWORD milliseconds);										
*		執行所有的更新操作,傳入的參數為兩次操作經過的時間,以毫秒為單位
*																			
*	virtual void Draw();															
*		執行所有的繪制操作
*/
//=========================================================================
#include "stdafx.h"
#include "3DSFile.h"						    


/** 創建一個程序的實例 */
GLApplication * GLApplication::Create(const char * class_name)
{
	Test * test = new Test(class_name);
	return reinterpret_cast<GLApplication *>(test);
}


/** 構造函數 */
Test::Test(const char * class_name) : GLApplication(class_name)
{
  /// 初始化用戶自定義的程序變量
	m_Fps = 0;
	m_RenderMode = true;
	sp = false;
    
}


/** 初始化OpenGL */
bool Test::Init()									
{
/** 用戶自定義的初始化過程 */
	glClearColor(0.0f, 0.0f, 0.0f, 0.5f);						
	glClearDepth(1.0f);											
	glDepthFunc(GL_LEQUAL);										
	glEnable(GL_DEPTH_TEST);
	glEnable(GL_CULL_FACE);	
	glShadeModel(GL_SMOOTH);									
	glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);			
	ResizeDraw(true);	                             /**< 改變OpenGL窗口大小,直接調用子類的函數 */


	/** 初始化字體 */
	if(!m_Font.InitFont())
		MessageBox(NULL,"初始化字體失敗!","錯誤",MB_OK);
	
	
	/** 初始化地形 */	
	if(!m_Terrain.init())
	{
		MessageBox(NULL,"初始化地形失敗!","錯誤",MB_OK);
		exit(0);
	}

	/** 初始化天空 */
	if(!m_SkyBox.init())
	{
		MessageBox(NULL,"初始化天空失敗!","錯誤",MB_OK);
		exit(0);
	}


	/** 初始化3DS文件 */
	m_3DS.Init("model.3ds");

    /** 設置攝像機 */
	m_Camera.setCamera( 381, 35, 674,  374.5, 35, 669,  0, 1, 0);

	return true;                                        /**< 成功返回 */
}

/** 用戶自定義的卸載函數 */
void Test::Uninit()									
{
}
/** 更新攝像機 */
void Test::UpdateCamera()
{
	m_Camera.setViewByMouse();
	
	/** 鍵盤按鍵響應 */
	if(m_Keys.IsPressed(VK_SHIFT))                        /**< 按下SHIFT鍵時加速 */
	{
		m_Camera.setSpeed(1.2f);
	}
	if(!m_Keys.IsPressed(VK_SHIFT))
	{
		m_Camera.setSpeed(0.6f);
	}
	if(m_Keys.IsPressed(VK_UP) || m_Keys.IsPressed('W'))   /**< 向上方向鍵或'W'鍵按下 */
		m_Camera.moveCamera(m_Camera.getSpeed());          /**< 移動攝像機 */

	if(m_Keys.IsPressed(VK_DOWN) || m_Keys.IsPressed('S')) /**< 向下方向鍵或'S'鍵按下 */
		m_Camera.moveCamera(-m_Camera.getSpeed());         /**< 移動攝像機 */

	if(m_Keys.IsPressed(VK_LEFT) || m_Keys.IsPressed('A')) /**< 向左方向鍵或'A'鍵按下 */
		m_Camera.yawCamera(-m_Camera.getSpeed());          /**< 移動攝像機 */

	if(m_Keys.IsPressed(VK_RIGHT) || m_Keys.IsPressed('D')) /**< 向右方向鍵或'D'鍵按下 */
		m_Camera.yawCamera(m_Camera.getSpeed());            /**< 移動攝像機 */

	/** 根據地形高度更新攝像機 */
	Vector3 vPos = m_Camera.getPosition();                  /**< 得到當前攝像機位置 */
    Vector3 vNewPos = vPos; 
	

	/** 設置攝像機高度為 地形高度 + 10 */
	vNewPos.y = (float)m_Terrain.getAveHeight(vPos.x,vPos.z ) + 10;

		/** 得到高度差值 */
		float temp = vNewPos.y - vPos.y;

		/** 更新攝像機方向 */
		Vector3 vView = m_Camera.getView();
		vView.y += temp;

		/** 設置攝像機 */
		m_Camera.setCamera(vNewPos.x,  vNewPos.y,  vNewPos.z,
						   vView.x,	   vView.y,	   vView.z,	 
						   0, 1, 0);								
	
}
/** 程序更新函數 */
void Test::Update(DWORD milliseconds)						
{
	if (m_Keys.IsPressed(VK_ESCAPE) == true)					/**< 按ESC退出 */
	{
		TerminateApplication();									
	}

/** 用戶自定義的更新過程 */
	
	/** 更新攝像機 */
	UpdateCamera();

	/** 空格鍵切換繪制模式 */
	if(m_Keys.IsPressed(VK_SPACE) && !sp)
	{
		sp = true;
		m_RenderMode = !m_RenderMode;
		if(m_RenderMode)
			glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
		else
			glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
	}
			

	if(!m_Keys.IsPressed(VK_SPACE))
		sp = false;

		    
}

/** 計算幀速 */
void Test::CaculateFrameRate()
{
	static float framesPerSecond    = 0.0f;	     /**< 保存顯示幀數 */	
    static float lastTime			= 0.0f;	     /**< 記錄上次時間 */						
    float currentTime = GetTickCount() * 0.001f; /**< 獲得當前時間 */	 			

	framesPerSecond++;                           /**< 顯示幀數遞增1 */
    /** 如果時間差大于1.0秒 */
	if( currentTime - lastTime > 1.0f )          
    {
		
	    lastTime = currentTime;                   /**< 保存當前時間 */
		m_Fps = framesPerSecond;                  /**< 當前幀數傳給m_Fps */
        framesPerSecond = 0;                      /**< 將幀數置零 */                    
    }

}

/** 輸出文字信息 */
void  Test::PrintText()
{
	char string[128];                               /**< 用于保存輸出字符串 */
	glPushAttrib(GL_CURRENT_BIT);                   /**< 保存現有顏色屬性信息 */
	glColor3f(0.0f,1.0f,1.0f);                      /**< 設置文字顏色 */
	sprintf(string,"當前位置:X=%3.1f  Y=%3.1f Speed =%3.1f ",   
		m_Camera.getPosition().x,m_Camera.getPosition().z ,m_Camera.getSpeed()); /**< 字符串賦值 */
	m_Font.PrintText(string,-5.0f,3.5f);

	/** 輸出幀速 */
    CaculateFrameRate();                               /**< 計算幀速 */
    sprintf(string,"FPS:%d",(int)m_Fps);               /**< 字符串賦值 */
	m_Font.PrintText(string, -5.0f,3.0f);              /**< 輸出字符串 */
	glPopAttrib();
		
}


/** 顯示3DS模型 */
void Test::Show3DS(float x,float z,float scale)
{
	glPushMatrix();
	float y = m_Terrain.getAveHeight(x,z) ;  /**< 獲得此處地形高度 */
	glTranslatef(x,y,z);
	glScalef(scale,scale,scale);
	m_3DS.Draw();                            /**< 顯示3DS模型 */
	glPopMatrix();

}

/** 繪制函數 */
void Test::Draw()											
{
/** 用戶自定義的繪制過程 */
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);			
	glLoadIdentity();
	
	/** 放置攝像機 */	
	m_Camera.setLook();
	
	/** 渲染地形 */
	m_Terrain.render();
	
	/** 繪制天空 */
	m_SkyBox.render();


	/** 顯示3DS模型 */
	Show3DS(260,583,20);
	
	/** 輸出屏幕信息 */ 
	PrintText();
		
	glFlush();	                 /**< 強制執行所有的OpenGL命令 */
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人av电影免费在线观看| 久久精品噜噜噜成人88aⅴ| 国产欧美视频一区二区三区| 欧美一区二视频| 欧美精品九九99久久| 欧美裸体bbwbbwbbw| 欧美日韩国产精选| 欧美日韩一区二区三区视频 | 在线视频一区二区三区| 99国产精品久久久久| 色婷婷亚洲一区二区三区| 91论坛在线播放| 欧美日韩成人在线| 91麻豆精品国产无毒不卡在线观看| 制服丝袜亚洲色图| 久久中文字幕电影| 中文字幕久久午夜不卡| 亚洲欧美日韩国产另类专区| 亚洲一区在线视频| 免费人成网站在线观看欧美高清| 久久精品国产免费看久久精品| 国产福利视频一区二区三区| www.亚洲色图| 777奇米四色成人影色区| 精品国产乱码久久久久久夜甘婷婷| 国产香蕉久久精品综合网| 中文字幕亚洲视频| 日韩黄色小视频| 国产精品123区| 欧美色倩网站大全免费| 欧美本精品男人aⅴ天堂| 亚洲欧洲av一区二区三区久久| 亚洲午夜在线观看视频在线| 毛片av一区二区| bt7086福利一区国产| 555www色欧美视频| 国产欧美一区二区三区在线看蜜臀| 亚洲精品高清视频在线观看| 韩国成人精品a∨在线观看| 色偷偷88欧美精品久久久| 日韩欧美一区在线| 亚洲精品国产精华液| 国产美女在线精品| 欧美区视频在线观看| 国产精品午夜春色av| 日日夜夜免费精品| 色域天天综合网| 国产欧美综合在线观看第十页| 五月激情丁香一区二区三区| 99九九99九九九视频精品| 亚洲精品在线观看视频| 日韩精品国产精品| 色综合视频在线观看| 欧美极品美女视频| 裸体健美xxxx欧美裸体表演| 欧美伊人精品成人久久综合97| 久久久久久久久久久久久久久99| 日韩av中文字幕一区二区三区 | 香蕉影视欧美成人| 波多野结衣中文字幕一区二区三区| 91精品中文字幕一区二区三区| 中文字幕五月欧美| 不卡的av中国片| 国产女人18毛片水真多成人如厕| 青青草国产精品亚洲专区无| 欧美日韩在线综合| 亚洲精品一卡二卡| 成人激情免费电影网址| 日本一区二区免费在线| 国产精品一品二品| 欧美韩国日本不卡| 成人黄色777网| 国产精品久久久久一区| 成人爱爱电影网址| 亚洲欧洲美洲综合色网| 99麻豆久久久国产精品免费优播| 国产午夜精品久久久久久久 | 久久亚洲春色中文字幕久久久| 天堂一区二区在线免费观看| 欧美乱妇一区二区三区不卡视频| 亚洲午夜久久久| 欧美情侣在线播放| 美女视频网站久久| 久久综合九色综合97_久久久| 国产一区不卡精品| 中文av一区二区| 色婷婷av一区二区三区软件| 亚洲一区二区高清| 日韩三级高清在线| 国产大陆精品国产| 专区另类欧美日韩| 欧美日韩亚洲综合在线| 麻豆成人av在线| 欧美高清在线一区二区| 99久久99久久精品免费观看| 亚洲成人动漫一区| 精品国产乱子伦一区| 不卡视频免费播放| 亚洲影视在线播放| 欧美大尺度电影在线| 国产成人亚洲综合a∨婷婷 | 国产精品综合在线视频| 国产精品动漫网站| 欧美日韩专区在线| 狂野欧美性猛交blacked| 久久蜜桃av一区精品变态类天堂| 成人黄色777网| 日韩和欧美的一区| 日本一区二区三区dvd视频在线| 在线看日本不卡| 国产剧情在线观看一区二区| 亚洲青青青在线视频| 日韩欧美资源站| 在线精品国精品国产尤物884a| 美女国产一区二区三区| 亚洲欧洲无码一区二区三区| 欧美精品xxxxbbbb| 成人av免费在线观看| 免费高清在线一区| 亚洲欧美电影一区二区| 精品国偷自产国产一区| 欧美天堂一区二区三区| 国产一区激情在线| 午夜视频一区二区| 国产精品美女久久久久aⅴ | 国产成人精品一区二区三区四区 | 一区二区三区日韩在线观看| 26uuu亚洲| 7777精品伊人久久久大香线蕉完整版| 不卡一二三区首页| 国产在线乱码一区二区三区| 日精品一区二区| 亚洲男人的天堂av| 欧美极品少妇xxxxⅹ高跟鞋 | 日日欢夜夜爽一区| 一区二区三区四区五区视频在线观看| 欧美成人精品福利| 欧美精选一区二区| 色婷婷久久99综合精品jk白丝| 国产高清一区日本| 国产精品一级片在线观看| 欧美aaa在线| 天堂va蜜桃一区二区三区漫画版| 亚洲狼人国产精品| 国产精品久久久久精k8| 国产亚洲精品7777| 国产日韩欧美一区二区三区乱码| 日韩三级高清在线| 日韩三级电影网址| 日韩免费看的电影| 日韩欧美国产三级| 日韩一级大片在线| 91精品国产91久久久久久一区二区| 欧美亚洲图片小说| 在线看日韩精品电影| 在线看日本不卡| 欧美日韩国产高清一区| 精品视频在线免费| 在线综合+亚洲+欧美中文字幕| 这里是久久伊人| 精品久久久久一区二区国产| 日韩一区二区在线看| 欧美videossexotv100| 精品成人免费观看| 久久精品人人爽人人爽| 国产精品女上位| 亚洲人成小说网站色在线| 一区二区三区四区高清精品免费观看 | 亚洲国产精品一区二区久久恐怖片| 亚洲美女屁股眼交3| 亚洲第一会所有码转帖| 免费观看日韩电影| 国产成人av电影| 91久久一区二区| 日韩一级大片在线| 亚洲国产成人一区二区三区| 亚洲同性gay激情无套| 亚洲国产精品久久艾草纯爱| 亚洲成人综合视频| 国产在线麻豆精品观看| 97久久久精品综合88久久| 欧美日韩一区视频| 久久一夜天堂av一区二区三区| 国产精品视频一二三区| 亚洲午夜精品在线| 国产在线精品免费| 色婷婷综合久久久中文一区二区| 欧美裸体bbwbbwbbw| 国产精品无圣光一区二区| 香蕉久久夜色精品国产使用方法| 精品一区二区免费在线观看| 成a人片亚洲日本久久| 69堂国产成人免费视频| 欧美激情综合五月色丁香小说| 亚洲成人av免费| av男人天堂一区| 日韩欧美黄色影院| 亚洲一区二区中文在线| 国产一区二区精品久久91| 欧美三级欧美一级|