OpenGL的路真難走~跑NeHe網站的範例6出問題~ |
尚未結案
|
黑輪
中階會員 發表:135 回覆:188 積分:64 註冊:2004-01-29 發送簡訊給我 |
我跑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 發送簡訊給我 |
|
yangkissktop
一般會員 發表:13 回覆:29 積分:8 註冊:2003-10-25 發送簡訊給我 |
這程式我有玩過, 如果沒錯應該是(第六課)紋理對映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 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |