資源簡介
Opengl 導入3Dmax制作的.3ds模型 并顯示出來 這是博文對應的工程,用于顯示3D模型。比較簡單的調用方法, 把復雜的內部結構全部弄到一起屏蔽掉,想要分析的 可以仔細看看那個文件。
代碼片段和文件信息
#include?“CLoad3DS.h“
#pragma?warning?(disable:?4996)?
//?下面的函數求兩點決定的矢量
NBVector3?Vector(NBVector3?vPoint1?NBVector3?vPoint2)
{
NBVector3?vVector;??????????????
vVector.x?=?vPoint1.x?-?vPoint2.x;??????
vVector.y?=?vPoint1.y?-?vPoint2.y;??????
vVector.z?=?vPoint1.z?-?vPoint2.z;??????
return?vVector;????????????????
}
//?下面的函數兩個矢量相加
NBVector3?AddVector(NBVector3?vVector1?NBVector3?vVector2)
{
NBVector3?vResult;??????????????
vResult.x?=?vVector2.x?+?vVector1.x;????
vResult.y?=?vVector2.y?+?vVector1.y;????
vResult.z?=?vVector2.z?+?vVector1.z;????
return?vResult;????????????????
}
//?下面的函數處理矢量的縮放
NBVector3?DivideVectorByScaler(NBVector3?vVector1?float?Scaler)
{
NBVector3?vResult;??????????????
vResult.x?=?vVector1.x?/?Scaler;??????
vResult.y?=?vVector1.y?/?Scaler;??????
vResult.z?=?vVector1.z?/?Scaler;??????
return?vResult;????????????????
}
//?下面的函數返回兩個矢量的叉積
NBVector3?Cross(NBVector3?vVector1?NBVector3?vVector2)
{
NBVector3?vCross;????????????????
vCross.x?=?((vVector1.y?*?vVector2.z)?-?(vVector1.z?*?vVector2.y));
vCross.y?=?((vVector1.z?*?vVector2.x)?-?(vVector1.x?*?vVector2.z));
vCross.z?=?((vVector1.x?*?vVector2.y)?-?(vVector1.y?*?vVector2.x));
return?vCross;????????????????
}
//?下面的函數規范化矢量
NBVector3?Normalize(NBVector3?vNormal)
{
double?Magnitude;??????????????
Magnitude?=?Mag(vNormal);??????????//?獲得矢量的長度
vNormal.x?/=?(float)Magnitude;????????
vNormal.y?/=?(float)Magnitude;????????
vNormal.z?/=?(float)Magnitude;????????
return?vNormal;????????????????
}
//?讀入一個紋理
int?CLoad3DS::BuildTexture(char?*szPathName?GLuint?&texid)
{
HDC??????hdcTemp;????????????????????????//?The?DC?To?Hold?Our?Bitmap
HBITMAP????hbmpTemp;????????????????????????//?Holds?The?Bitmap?Temporarily
IPicture??*pPicture;????????????????????????//?IPicture?Interface
OLECHAR????wszPath[MAX_PATH+1];??????????????????//?Full?Path?To?Picture?(WCHAR)
char????szPath[MAX_PATH+1];????????????????????//?Full?Path?To?Picture
long????lWidth;??????????????????????????//?Width?In?Logical?Units
long????lHeight;????????????????????????//?Height?In?Logical?Units
long????lWidthPixels;??????????????????????//?Width?In?Pixels
long????lHeightPixels;??????????????????????//?Height?In?Pixels
GLint????glMaxTexDim?;??????????????????????//?Holds?Maximum?Texture?Size
if?(strstr(szPathName?“http://“))??????????????????//?If?PathName?Contains?http://?Then...
{
strcpy(szPath?szPathName);????????????????????//?Append?The?PathName?To?szPath
}
else????????????????????????????????//?Otherwise...?We?Are?Loading?From?A?File
{
GetCurrentDirectory(MAX_PATH?szPath);??????????????//?Get?Our?Working?Directory
strcat(szPath?PICPATH);??????????????????????//?Append?“\“?After?The?Working?Directory
strcat(szPath?szPathName);????????????????????//?Append?The?PathName
}
MultiByteToWideChar(CP_ACP?0?szPath?-1?wszPath?MAX_PATH);?
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????25078??2014-12-11?22:05??Lesson06\CLoad3DS.cpp
?????文件???????8064??2014-12-11?22:06??Lesson06\CLoad3DS.h
?????文件?????398031??2002-04-29?13:04??Lesson06\Data\3DS\AUDIAVUS.3DS
?????文件??????59320??2011-04-01?16:35??Lesson06\Data\3DS\balloon.3DS
?????文件??????93307??2011-04-01?16:35??Lesson06\Data\3DS\boy.3DS
?????文件??????93334??2011-04-01?16:35??Lesson06\Data\3DS\boy_back.3DS
?????文件?????200553??2011-04-01?16:35??Lesson06\Data\3DS\building.3DS
?????文件?????231125??2011-04-01?16:35??Lesson06\Data\3DS\building_nb.3DS
?????文件?????389973??2002-06-24?14:31??Lesson06\Data\3DS\COLI_L.3DS
?????文件?????196223??2011-04-01?16:35??Lesson06\Data\3DS\dinosaur.3DS
?????文件?????210575??2011-04-01?16:35??Lesson06\Data\3DS\F111_L.3DS
?????文件??????91812??2011-04-01?16:35??Lesson06\Data\3DS\farTree.3DS
?????文件?????152229??2011-04-01?16:35??Lesson06\Data\3DS\GUTEMB_L.3DS
?????文件?????156778??2011-04-01?16:35??Lesson06\Data\3DS\GUTEMB_L_back.3DS
?????文件??????10315??2011-04-01?16:35??Lesson06\Data\3DS\house.3DS
?????文件??????19860??2011-04-01?16:35??Lesson06\Data\3DS\house_back.3ds
?????文件?????228556??2006-03-20?15:32??Lesson06\Data\3DS\M1_Abrams.3DS
?????文件??????14796??2011-04-01?16:35??Lesson06\Data\3DS\middleTree.3DS
?????文件??????40431??2011-04-01?16:35??Lesson06\Data\3DS\muoshou.3DS
?????文件??????25029??2011-04-01?16:35??Lesson06\Data\3DS\rock.3DS
?????文件?????525926??2011-04-01?16:35??Lesson06\Data\3DS\STUT_C_L.3DS
????..A..H.??????5120??2011-04-01?16:35??Lesson06\Data\3DS\Thumbs.db
?????文件?????142679??2011-04-01?16:35??Lesson06\Data\3DS\townHouse.3DS
?????文件?????245607??2011-04-01?16:35??Lesson06\Data\3DS\tree_leaf.3DS
?????文件?????454069??2002-04-22?16:48??Lesson06\Data\3DS\TWOSTORY.3DS
?????文件?????230621??2002-04-30?15:47??Lesson06\Data\3DS\T_HELI_L.3DS
?????文件?????757524??2011-04-01?16:35??Lesson06\Data\3DS\warehouse.3DS
?????文件?????196664??2000-03-06?02:10??Lesson06\Data\NeHe.bmp
?????文件??????11896??2011-04-01?16:34??Lesson06\Data\pic\41.JPG
?????文件??????50713??2011-04-01?16:34??Lesson06\Data\pic\5DG‘S?Heightmap.jpg
............此處省略140個文件信息
- 上一篇:Windows核心編程PDF完整版
- 下一篇:移動開發 H5開發angular4教程
評論
共有 條評論