討論區快速選單
知識庫快速選單
討論區最近新進100則主題 掌握Salesforce雲端管理秘訣
[ 回上頁 ] [ 討論區發言規則 ]
OPENGL 超級手冊 第2版 第八章貼圖問題
更改我的閱讀文章字型大小
作者 : liuchris(chris)
[ 貼文 6 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2012/12/25 下午 09:50:17
大家好

小弟最近剛學OPENGL

看了OPENGL 超級手冊 第2版這本書

在材質貼圖出現了問題

程式編譯沒問題

視窗出現時卻出現錯誤訊息對話框

"test2.exe發生問題,必須關閉,謹此致歉。"

我是用QT寫的

不知道問題出在哪??

請各位高手指點迷津,謝謝

在此附上我的程式glwidget.cpp(我想問題是出在這一段)

void GLWidget::paintGL(){



     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);

     TexBits = LoadDIBitmap("pot.bmp", &TexInfo);
     glTexImage2D(GL_TEXTURE_2D, 0, 3, TexInfo->bmiHeader.biWidth,
     TexInfo->bmiHeader.biHeight, 0, GL_BGR_EXT,
     GL_UNSIGNED_BYTE, TexBits);


     glEnable(GL_TEXTURE_2D);
     glEnable(GL_DEPTH_TEST);
     glEnable(GL_LIGHTING);
     glEnable(GL_LIGHT0);

     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

     glPushMatrix();
     glTranslatef(0.0, 0.0, -50.0);

     glColor3f(1.0, 1.0, 1.0);
     glutSolidTeapot(10.0);

     glPopMatrix();

     glFinish();

}





作者 : cromayen2000(CROMAYEN2000) OpenGL卓越專家貼文超過500則人氣指數超過10000點
[ 貼文 645 | 人氣 22308 | 評價 2260 | 評價/貼文 3.5 | 送出評價 38 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2012/12/25 下午 10:58:58
你把材質的載入放在 paintGL 但是又沒有檢查是否已經完成載入,那你每回更新畫面的時候就在再次執行載入的動作

另外我也沒有看到你配置材質編號以及連接材質
作者 : cromayen2000(CROMAYEN2000) OpenGL卓越專家貼文超過500則人氣指數超過10000點
[ 貼文 645 | 人氣 22308 | 評價 2260 | 評價/貼文 3.5 | 送出評價 38 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2012/12/25 下午 11:00:46
附記這本書已經出道第五版了,如果不想花錢買原文書可以考慮簡體版的(把教師著作從教師升等條件中拿掉的王八蛋應該要下地獄)
作者 : liuchris(chris)
[ 貼文 6 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2012/12/26 上午 10:38:58
請問 cromayen2000大大

我有點不太懂要如何檢查是否已經完成載入??



另外配置材質編號以及連接材質 問題

我是不是要再加上下面這行?

glBindTexture(GL_TEXTURE_2D, texture[編號]);


煩請指點,謝謝
作者 : cromayen2000(CROMAYEN2000) OpenGL卓越專家貼文超過500則人氣指數超過10000點
[ 貼文 645 | 人氣 22308 | 評價 2260 | 評價/貼文 3.5 | 送出評價 38 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2012/12/26 上午 11:16:22
GLuint texture = 0;

// 要求顯示卡配置一個材質編號 配置成功的話 texture 將不等於 0
glGenTextures(1, &texture);

// 要求顯示卡連結到指定的材質編號 (後續的相關操作將以指定的材質編號作為目標)
glBindTexture(GL_TEXTURE_2D, texture);

// 通知顯示卡替指定的材質配置記憶體並根據指定的格式載入材質
glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage[0]->sizeX, TextureImage[0]->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[0]->data);

// 設定當材質放大或縮小時顯示卡對材質的取樣方式(必須)
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);

以上是設定材質的過程,一般勢將 texture 設定為全愈變數或是成員變數 並給初始值 0 根據數值判斷是否完成初始化或是需要釋放掉

對此有興趣的話可以參考 NeHe 的教學,有熱心的網友已經有中文的翻譯版感謝他
http://www.owlei.com/DancingWind/

作者 : liuchris(chris)
[ 貼文 6 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2012/12/28 下午 04:32:29
老實說我覺得這本書中文版翻得的好糟糕
好多地方都看得不是很懂
有些句子很不是很通順...
作者 : cromayen2000(CROMAYEN2000) OpenGL卓越專家貼文超過500則人氣指數超過10000點
[ 貼文 645 | 人氣 22308 | 評價 2260 | 評價/貼文 3.5 | 送出評價 38 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2012/12/30 上午 02:14:44
十幾年前的書了,不過簡體板的好像也沒好到哪去
 板主 : 白老鼠(Gary)
 > OpenGL - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - OpenGL - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
OpenGL
1 白老鼠(Gary) 2720 
2 CROMAYEN2000 1530 
3 aming 500 
4 東昇 380 
5 PLAYER 120 
6 富伯 110 
7 qq 100 
8 NDark 80 
9 ozzy 60 
10 simula 60 
OpenGL
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2018 程式設計俱樂部 http://www.programmer-club.com.tw/
0.046875