讀取及直接顯示網格 |
答題得分者是:ikk
|
5515531
一般會員 ![]() ![]() 發表:19 回覆:44 積分:12 註冊:2008-04-16 發送簡訊給我 |
我在之前有看到書裡有顯示網格的程式碼
所以我將它實現至C Builder中 但是卻出現問題卻不知道如何解決 能否請各位能不能幫我解決此問題 我將程式碼夾在檔案中 ![]() |
ikk
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:4 回覆:413 積分:768 註冊:2003-06-30 發送簡訊給我 |
|
5515531
一般會員 ![]() ![]() 發表:19 回覆:44 積分:12 註冊:2008-04-16 發送簡訊給我 |
他會出現Access violation at address 00401B81 in model 'Project1.exe'. Read of address 00000004這句話的視窗
但不能出現任何圖樣!! 不好意思~當初沒有說清楚~裡面有使用到OPENGL的Tool 後來嘗試了一下~是在下列的程式碼中出了問題~但這只是我認為啦!! 所以還是需要大大的幫忙!! [code cpp] void __fastcall TForm1::GLPanel1Render(TObject *Sender) { //ObjModel* model; static int i; static ObjTriangle* triangle; static ObjGroup* group; glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); glTranslatef(0.0f,0.0f,11.0f); glColor4f(1.0,0.0,0.0,0.5); // group = model->groups; while(group) { glBegin(GL_TRIANGLES); for(i=0; i < group->numtriangles; i ) { triangle = &T(group->triangles[i]); glVertex3fv(&model->vertices[3 * triangle->vindices[0]]); glVertex3fv(&model->vertices[3 * triangle->vindices[1]]); glVertex3fv(&model->vertices[3 * triangle->vindices[2]]); } glEnd(); group = group->next; } glEnd(); GLPanel1->SwapBuffers(); } [/code] 由其是code"//"部分~主要問題應該是在這裡 |
ikk
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:4 回覆:413 積分:768 註冊:2003-06-30 發送簡訊給我 |
|
5515531
一般會員 ![]() ![]() 發表:19 回覆:44 積分:12 註冊:2008-04-16 發送簡訊給我 |
ObjModel * model;
是我後來才令給他的~原本我沒有這一行指令的~因為在這code前面 我有設計結構 [code cpp] typedef struct _ObjModel { char* mtllibname; // mtl 檔案名稱 int numvertices; // vertice 的數量 float* vertices; // 收集所有 vertice 的陣列 int numtexcoords; // 貼圖座標的數量 float* texcoords; // 貼圖座標的陣列 int numnormals; // normal 的數量 float* normals; // normal 的陣列 int numtriangles; // 圖形由多少個三角形組成 ObjTriangle* triangles; // 存放三角形的陣列 int nummaterials; // 圖形有多少個材質貼圖 ObjMaterial* materials; // 存放材質貼圖的陣列 int numgroups; // 圖形有多少個Group組成 ObjGroup* groups; // 連結每個 Group } ObjModel; [/code] [code cpp] typedef struct _ObjGroup { char* name; // Group名稱 int numtriangles; // 此 Group 由多少個三角形組成 int* triangles; // 指向三角形的陣列指標 int material; // 使用的material struct _ObjGroup* next; // 指向下一個 Group }ObjGroup; [/code] 如果將ObjModel * model;去除,會出現我並沒有定義~ 我在這連結指標部分~也是看書學的~所以很不懂 可以麻煩費心教一下我嗎?不好意思麻煩了!! |
ikk
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:4 回覆:413 積分:768 註冊:2003-06-30 發送簡訊給我 |
|
5515531
一般會員 ![]() ![]() 發表:19 回覆:44 積分:12 註冊:2008-04-16 發送簡訊給我 |
|
ikk
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:4 回覆:413 積分:768 註冊:2003-06-30 發送簡訊給我 |
|
5515531
一般會員 ![]() ![]() 發表:19 回覆:44 積分:12 註冊:2008-04-16 發送簡訊給我 |
那我應該怎麼給值讓他去執行呢?
[code cpp] void __fastcall TForm1::GLPanel1Render(TObject *Sender) { ObjModel* model; static int i; static ObjTriangle* triangle; static ObjGroup* group; model = new ObjModel; glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); glTranslatef(0.0f,0.0f,11.0f); glColor4f(1.0,0.0,0.0,0.5); group = model->groups; while(group) { glBegin(GL_TRIANGLES); for(i=0; i < group->numtriangles; i ) { triangle = &T(group->triangles[i]); // glNormal3fv(&model->normals[3 * triangle->nindices[0]]); glVertex3fv(&model->vertices[3 * triangle->vindices[0]]); // glNormal3fv(&model->normals[3 * triangle->nindices[1]]); glVertex3fv(&model->vertices[3 * triangle->vindices[1]]); // glNormal3fv(&model->normals[3 * triangle->nindices[2]]); glVertex3fv(&model->vertices[3 * triangle->vindices[2]]); } glEnd(); group = group->next; } glEnd(); GLPanel1->SwapBuffers(); } [/code] 可否舉個例子教我~~麻煩了!!
編輯記錄
5515531 重新編輯於 2009-02-19 15:28:54, 註解 無‧
|
ikk
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:4 回覆:413 積分:768 註冊:2003-06-30 發送簡訊給我 |
|
5515531
一般會員 ![]() ![]() 發表:19 回覆:44 積分:12 註冊:2008-04-16 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |