線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2047
推到 Plurk!
推到 Facebook!

OpenGL的路真難走~跑NeHe網站的範例6出問題~

尚未結案
黑輪
中階會員


發表:135
回覆:188
積分:64
註冊:2004-01-29

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-03-03 13:15:11 IP:140.124.xxx.xxx 未訂閱
我跑http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=06網站的範例(在最下面有BCC的範例可下載),可是執行時,出現下列訊息
 
[Linker Error] Unresolved external 'auxDIBImageLoadA' referenced from C:\LESSON06_BCB6\LESSON06.OBJ
(我把檔案解壓縮在C:下執行)我猜可能是auxDIBImageLoad出問題,最慘的是後面的範例都有此,如果沒有決解此問題,後面都不用做了~各位朋友知道有什麼問題嗎?
wyndog
資深會員


發表:7
回覆:362
積分:348
註冊:2004-10-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-03-03 18:12:33 IP:60.248.xxx.xxx 未訂閱
看看 BCB 底下有沒有 GlAux.lib 可能要把它加到 Porject 裡吧? 手上沒有 BCB 沒辦法幫你試......
yangkissktop
一般會員


發表:13
回覆:29
積分:8
註冊:2003-10-25

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-03-05 19:05:21 IP:221.169.xxx.xxx 未訂閱
這程式我有玩過, 如果沒錯應該是(第六課)紋理對映Texture Mapping :     要點: 1. bmp檔大小至少64x64(2的倍數),顏色至多256色 2. 載入Lib函式庫到專案:Project Add to Project? glaux.lib 3. glBindTexture()不可在glBegin()及glEnd()之間 4. 貼圖流程: GLuint id; AUX_RGBImageRec *txt = auxDIBImageLoad("*.bmp"); glGenTextures(圖片數, id) glBindTexture (GL_TEXTURE_2D, id); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER , GL_LINEAR); glTexImage2D (GL_TEXTURE_2D, 細節, 色分量數, 寬, 高, 邊界粗細, GL_RGB, GL_UNSIGNED_BYTE, 圖資料); 5. 貼圖解析度有三種:GL_NEAREST、GL_LINEAR、GL_LINEAR_MIPMAP_NEAREST。 (一)Unit1.h: GLfloat deg1, deg2, deg3; GLuint id[6]; (二)Unit1.cpp: void __fastcall TForm1::FormCreate(TObject *Sender) { myDc = GetDC( this->Handle ); PIXELFORMATDESCRIPTOR myPfd = { sizeof(PIXELFORMATDESCRIPTOR), 1, PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER, PFD_TYPE_RGBA, 24, 0,0, 0,0, 0,0, 0,0, 0, 0,0,0,0, 32, 0, 0, PFD_MAIN_PLANE, 0, 0,0,0 }; myPf = ChoosePixelFormat(myDc, &myPfd); SetPixelFormat(myDc, myPf, &myPfd); myRc = wglCreateContext( myDc ); wglMakeCurrent(myDc, myRc); ///// 載入材質 ///// AUX_RGBImageRec *tex0, *tex1, *tex2, *tex3, *tex4, *tex5; tex0 = auxDIBImageLoad( "front.bmp" ); tex1 = auxDIBImageLoad( "back.bmp" ); tex2 = auxDIBImageLoad( "top.bmp" ); tex3 = auxDIBImageLoad( "bottom.bmp" ); tex4 = auxDIBImageLoad( "right.bmp" ); tex5 = auxDIBImageLoad( "left.bmp" ); glGenTextures(6, id); glBindTexture(GL_TEXTURE_2D, id[0]); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexImage2D(GL_TEXTURE_2D, 0, 3, tex0->sizeX, tex0->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, tex0->data); glBindTexture(GL_TEXTURE_2D, id[1]); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexImage2D(GL_TEXTURE_2D, 0, 3, tex1->sizeX, tex1->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, tex1->data); glBindTexture(GL_TEXTURE_2D, id[2]); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexImage2D(GL_TEXTURE_2D, 0, 3, tex2->sizeX, tex2->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, tex2->data); glBindTexture(GL_TEXTURE_2D, id[3]); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexImage2D(GL_TEXTURE_2D, 0, 3, tex3->sizeX, tex3->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, tex3->data); glBindTexture(GL_TEXTURE_2D, id[4]); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexImage2D(GL_TEXTURE_2D, 0, 3, tex4->sizeX, tex4->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, tex4->data); glBindTexture(GL_TEXTURE_2D, id[5]); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexImage2D(GL_TEXTURE_2D, 0, 3, tex5->sizeX, tex5->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, tex5->data); glEnable( GL_TEXTURE_2D ); glClearColor(1,1,1, 0); glClearDepth( 1.0 ); glDepthFunc( GL_LESS ); glEnable( GL_DEPTH_TEST ); glShadeModel( GL_SMOOTH ); } void __fastcall TForm1::FormPaint(TObject *Sender) { glMatrixMode( GL_PROJECTION ); glLoadIdentity(); gluPerspective(45,1, 0.1,100); // 用0而不用0.1會不正常 // gluLookAt(0,0,1, 0,0,0, 0,1,0); glMatrixMode( GL_MODELVIEW ); glLoadIdentity(); myDraw(); } void TForm1::myDraw() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); glTranslatef(0, 0, -5); glRotatef(deg1, 1,0,0); glRotatef(deg2, 0,1,0); glRotatef(deg3, 0,0,1); /// 前側面 /// glBindTexture(GL_TEXTURE_2D, id[0]); glBegin( GL_QUADS ); glTexCoord2f(0, 0); glVertex3f(-1, -1, 1); // 下左 glTexCoord2f(1, 0); glVertex3f( 1, -1, 1); // 下右 glTexCoord2f(1, 1); glVertex3f( 1, 1, 1); // 上右 glTexCoord2f(0, 1); glVertex3f(-1, 1, 1); // 上左 glEnd(); /// 背側面 /// glBindTexture(GL_TEXTURE_2D, id[1]); glBegin( GL_QUADS ); glTexCoord2f(0, 0); glVertex3f( 1, -1, -1); // 下左 glTexCoord2f(1, 0); glVertex3f(-1, -1, -1); // 下右 glTexCoord2f(1, 1); glVertex3f(-1, 1, -1); // 上右 glTexCoord2f(0, 1); glVertex3f( 1, 1, -1); // 上左 glEnd(); /// 上側面 /// glBindTexture(GL_TEXTURE_2D, id[2]); glBegin( GL_QUADS ); glTexCoord2f(0, 0); glVertex3f(-1, 1, 1); // 下左 glTexCoord2f(1, 0); glVertex3f( 1, 1, 1); // 下右 glTexCoord2f(1, 1); glVertex3f( 1, 1, -1); // 上右 glTexCoord2f(0, 1); glVertex3f(-1, 1, -1); // 上左 glEnd(); /// 下側面 /// glBindTexture(GL_TEXTURE_2D, id[3]); glBegin( GL_QUADS ); glTexCoord2f(0, 0); glVertex3f(-1, -1, -1); // 下左 glTexCoord2f(1, 0); glVertex3f( 1, -1, -1); // 下右 glTexCoord2f(1, 1); glVertex3f( 1, -1, 1); // 上右 glTexCoord2f(0, 1); glVertex3f(-1, -1, 1); // 上左 glEnd(); /// 右側面 /// glBindTexture(GL_TEXTURE_2D, id[4]); glBegin( GL_QUADS ); glTexCoord2f(0, 0); glVertex3f( 1, -1, 1); // 下左 glTexCoord2f(1, 0); glVertex3f( 1, -1, -1); // 下右 glTexCoord2f(1, 1); glVertex3f( 1, 1, -1); // 上右 glTexCoord2f(0, 1); glVertex3f( 1, 1, 1); // 上左 glEnd(); /// 左側面 /// glBindTexture(GL_TEXTURE_2D, id[5]); glBegin( GL_QUADS ); glTexCoord2f(0, 0); glVertex3f(-1, -1, -1); // 下左 glTexCoord2f(1, 0); glVertex3f(-1, -1, 1); // 下右 glTexCoord2f(1, 1); glVertex3f(-1, 1, 1); // 上右 glTexCoord2f(0, 1); glVertex3f(-1, 1, -1); // 上左 glEnd(); glFlush(); SwapBuffers( myDc ); } void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift) { switch( Key ) { case VK_UP : deg1 -= 5; break; case VK_DOWN : deg1 += 5; break; case VK_RIGHT : deg2 += 5; break; case VK_LEFT : deg2 -= 5; break; case VK_ESCAPE : this->Close(); } this->myDraw(); } void __fastcall TForm1::FormKeyPress(TObject *Sender, char &Key) { switch( Key ) { case 'a' : deg3 -= 5; break; case 'z' : deg3 += 5; break; } this->myDraw(); } yangkissktop
------
yangkissktop
黑輪
中階會員


發表:135
回覆:188
積分:64
註冊:2004-01-29

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-04-01 10:47:13 IP:140.124.xxx.xxx 未訂閱
感謝你們的說明哦~現在我是用書上附的OpneGL VCL,配合此網站的程式,所以沒有之前的問題了~感謝哦
系統時間:2024-05-02 12:54:31
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!