Re: [問題] openGL載入貼圖連續顯示

看板C_and_CPP (C/C++)作者 (stu)時間13年前 (2013/04/29 03:09), 編輯推噓3(307)
留言10則, 3人參與, 最新討論串3/4 (看更多)
這邊很有問題 : 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)

04/29 03:23, , 1F
感謝指教
04/29 03:23, 1F

04/29 09:42, , 2F
目前在Display的部份有加入glBindTexture及glEnable()
04/29 09:42, 2F

04/29 09:44, , 3F
而且call back function我本來就寫在main裡面,應該是我
04/29 09:44, 3F

04/29 09:44, , 4F
複製上來時貼錯,目前修正之後仍是白色一片
04/29 09:44, 4F

04/29 10:31, , 5F
glTexImage2D的internal format參數改GL_RGB看看?
04/29 10:31, 5F

04/29 10:32, , 6F
另外檢查一下產生的id數字是否非零
04/29 10:32, 6F

04/29 10:33, , 7F
我是說glGenTexture產生的貼圖id
04/29 10:33, 7F

04/29 14:34, , 8F
...除了要四個點
04/29 14:34, 8F

04/29 14:44, , 9F
點的順序好像也有關系吧
04/29 14:44, 9F

04/29 17:37, , 10F
順序的部分也是貼錯,不知道貼上來為何怪怪= =
04/29 17:37, 10F
文章代碼(AID): #1HVNFOOc (C_and_CPP)
文章代碼(AID): #1HVNFOOc (C_and_CPP)