電腦遊戲製作開發設計論壇 首頁 電腦遊戲製作開發設計論壇
任何可以在PC上跑的遊戲都可以討論,主要以遊戲之製作開發為主軸,希望讓台灣的遊戲人有個討論、交流、教學、經驗傳承的園地
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入 

Google
关于3D模型读入的问题

 
發表新主題   回覆主題    電腦遊戲製作開發設計論壇 首頁 -> 遊戲程式高級班:DirectX、OpenGL及各種圖型函式庫
上一篇主題 :: 下一篇主題  
發表人 內容
xiaozhu_zy
稍嫌羞澀的路人


註冊時間: 2009-02-24
文章: 2

50.27 果凍幣

發表發表於: 2009-2-24, PM 5:43 星期二    文章主題: 关于3D模型读入的问题 引言回覆

大家好,我是新注册的。無意中看見這個網站的。我是大陸的,有時候看不懂你們的話,不過,我還是想在這裡發布這個問題,幫幫我啊

我用VC導入3D模型——obj格式,可是只有一個模型可以成功導入,其他的模型要么顯示不出來,要么有什麽內存錯誤,不知道是怎么回事?我是用那個glm.h和glm.cpp來導出的

下面是我的源碼,請高手幫我看看啊,謝謝。其他的代碼例如opengl的設置之類的我就不帖出來了,這幾段代碼就是導出的代碼。

void COBJLoaderView::MyInit(void)
{
glPolygonMode(GL_FRONT_AND_BACK,GL_FILL);
glShadeModel(GL_SMOOTH);
m_model =glmReadOBJ("data\\patriot.obj");//只有這個文件可以
// 導出,別的都不可
// 以
glmUnitize( m_model );
glmScale(m_model,1.0 );

}

void COBJLoaderView::DisplayObject(void)
{
GLfloat no_mat[] = { 0.05f, 0.05f, 0.05f, 1.0f };
GLfloat mat_ambient[] = { 0.35f, 0.35f, 0.45f, 1.0f };
GLfloat mat_diffuse[] = { 0.0f, 0.0f, 0.8f, 1.0f };
GLfloat mat_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f };
GLfloat no_shininess[] = { 0.0f };
GLfloat low_shininess[] = { 100.0f };
GLfloat high_shininess[] = { 10.0f };
GLfloat mat_emission[] = {0.3f, 0.2f, 0.2f, 0.0f};

GLfloat ambient[4] = { 0.2f, 0.2f, 0.3f, 1.0f };
GLfloat diffuse[4] = { 0.0f, 0.0f, 1.0f, 1.0f };
GLfloat specular[4] = { 1.0f, 1.0f, 1.0f, 1.0f };
GLfloat position[4] = { 10.0f,10.0f,10.0f, 1.0f };//创建具有某种特性的光源..所创建的光源号..光源特性(RGBA模式下)..光源特性值

glLightfv(GL_LIGHT0, GL_AMBIENT, ambient);//指针->ambient等
glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse);
glLightfv(GL_LIGHT0, GL_SPECULAR,specular);
glLightfv(GL_LIGHT0, GL_POSITION, position);

glEnable (GL_LIGHTING);//start light
glEnable (GL_LIGHT0);
//定义光照计算中用到的当前颜色材质..材质应该应用到物体的一个面(那一个面被修改)..-..
glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient);
glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse);
glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular);
glMaterialfv(GL_FRONT, GL_SHININESS, low_shininess);
glMaterialfv(GL_FRONT, GL_EMISSION, no_mat);
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LESS);
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
glmDraw(m_model,GLM_TEXTURE|GLM_SMOOTH);// COLOR
glmDelete( m_model );

glDisable(GL_LIGHTING);//off
}

void COBJLoaderView::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
HWND hWnd = GetSafeHwnd();
HDC hDC = ::GetDC(hWnd);
wglMakeCurrent(hDC,m_hGLContext);//使RC成为当前
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);//使屏成为黑色
glMatrixMode(GL_MODELVIEW);//选择模型观察矩阵
glLoadIdentity();//重置使其单位化,不受其他矩阵影响
glTranslatef(0.0f,0.0f,-5.0f);
glRotatef (180,1.0,0.0,0.0);
glScalef(1.5,0.5,-0.5);//反射变换
DisplayObject();
glFlush();
SwapBuffers(hDC);//交换前后台
::ReleaseDC(hWnd,hDC);

_________________
I do what I like to do!
回頂端
檢視會員個人資料 發送私人訊息
還是零分
散播福音的祭司


註冊時間: 2007-09-19
文章: 164

653.83 果凍幣

發表發表於: 2009-2-24, PM 9:49 星期二    文章主題: 引言回覆

既然有一個模型可以導出
那你po的code應該沒問題

唯一能顯示的模型是用什麼軟體導出的啊?跟其他模型用一樣的嗎?
也許你要找其他能導入obj的程式來試試看
或是自己寫一個
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
從之前的文章開始顯示:   
發表新主題   回覆主題    電腦遊戲製作開發設計論壇 首頁 -> 遊戲程式高級班:DirectX、OpenGL及各種圖型函式庫 所有的時間均為 台灣時間 (GMT + 8 小時)
1頁(共1頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
可以 在這個版面附加檔案
可以 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作