看板 C_and_CPP 關於我們 聯絡資訊
這邊很有問題 : 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