看了一个博文《opengl载入多个3ds模型失败记》,他的方法非常好,就只差最后一步了。
原程序运行图:
下面用三种方法来做最后一步。
1、运行外部程序
2、点到一个文件就载入内存,并不释放内存直到程序结束(在内存中存放所有模型)
3、释放上个文件,再载入当前的(只有一个模型)
下面分别来实现:
------------------------------------------------------------
1、运行外部程序
把前面我们的显示3DS程序命名为show3ds.exe 放在当前位置
在WndProc函数的case WM_COMMAND :中替换gothicLoader->Import3DS
if (LOWORD (wParam) == ID_LIST && HIWORD (wParam) == LBN_DBLCLK)
{
//gothicLoader->Import3DS(&gothicModel, "Data/3ds/middleTree.3DS");
//1、运行外部程序
int iIndex=2;
char szBuffer[256];
iIndex = SendMessage(hwndList,LB_GETCURSEL,0,0);//得到当前选择项
if (iIndex != LB_ERR){
SendMessage (hwndList, LB_GETTEXT, iIndex,(LPARAM) szBuffer);//得到选择文本
char m0[256];
if(strstr(szBuffer, "T_HELI_L.3DS"))
{
sprintf(m0,"T_HELI_L Data/3ds/%s",szBuffer);//直升机
system(m0);//运行外部程序
}
else{
sprintf(m0,"show3ds Data/3ds/%s",szBuffer);//其它
system(m0);//运行外部程序
}
}
}其它代码可到其博客下载(百度网盘)
第一种完成
本文介绍了使用OpenGL加载3DS模型的方法,通过三种不同的策略实现模型的加载与管理:运行外部程序、一次性加载所有模型并保留在内存中、每次仅加载一个模型。这为解决OpenGL加载多个3DS模型的问题提供了实用的解决方案。
7852

被折叠的 条评论
为什么被折叠?



