作者iamstudent (stu)
看板C_and_CPP
標題Re: [問題] openGL載入貼圖連續顯示
時間Mon Apr 29 03:09:09 2013
這邊很有問題
: Display()//call back
: {
: glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
: glClearColor(1.0, 1.0, 1.0, 1.0); //背景white
: glMatrixMode(GL_MODELVIEW);
: glLoadIdentity();
這邊才是設定使用貼圖的地方
畫之前啟用,就作用在你之後畫得物體上
glBindTexture(GL_TEXTURE_2D, id);
glEnable(GL_TEXTURE_2D); //你少了這個,除非你用shader就可以無視這行
因為沒有enable貼圖
所以畫出來自然會是白色的
: glBegin(GL_QUADS);
: glTexCoord2f(0,0); glVertex3f(-11,-11,0);
: glTexCoord2f(1,0); glVertex3f(11,-11,0);
: glTexCoord2f(1,1); glVertex3f(11,11,0);
如果是QUARDS,應該還需要第四個頂點
glEnd();
畫完之後看情況可以決定要不要取消貼圖
如果需要就呼叫這兩行
glDisable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, 0);
下面這四行應該要拿掉
不應該出現在display
reshape和display重新註冊callback函數還不會有事情
但是mainloop卻是一個永久迴圈
裡面又會去呼叫display
call stack遲早會炸掉
: glBindTexture(GL_TEXTURE_2D, textures[0]);
: glutReshapeFunc(WindowSize);
: //glutKeyboardFunc(Keyboard);
: glutDisplayFunc(Display);
: glutMainLoop();
: }
: 目前只先印第一張texture
: 我在每一次Display()執行時便會printf一次訊息
: 結果只print兩次
: 畫面都全白
: 請前輩指點迷津,謝謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.251.45
※ 編輯: iamstudent 來自: 140.113.251.45 (04/29 03:10)
推 starvirus:感謝指教 04/29 03:23
推 starvirus:目前在Display的部份有加入glBindTexture及glEnable() 04/29 09:42
→ starvirus:而且call back function我本來就寫在main裡面,應該是我 04/29 09:44
→ starvirus:複製上來時貼錯,目前修正之後仍是白色一片 04/29 09:44
→ iamstudent:glTexImage2D的internal format參數改GL_RGB看看? 04/29 10:31
→ iamstudent:另外檢查一下產生的id數字是否非零 04/29 10:32
→ iamstudent:我是說glGenTexture產生的貼圖id 04/29 10:33
推 cuteclare:...除了要四個點 04/29 14:34
→ cuteclare:點的順序好像也有關系吧 04/29 14:44
→ starvirus:順序的部分也是貼錯,不知道貼上來為何怪怪= = 04/29 17:37