我試圖趕上來自不兼容的圖像紋理分辨率的錯誤解決方法不兼容時如何捕獲glTexImage2D錯誤?
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, img->width, img->height, 0, GL_RGB, GL_UNSIGNED_BYTE, imgdata);
1. Compatible resolution, working fine = 1024x1024, 1920x1200, 1920x1080, 704x891
2. Incompatible resolutions, all giving error = 2058x1734, 1018x1280, 591x602, etc.
我不知道爲什麼glTexImage2D做工精緻用1號決議和#2的分辨率給錯誤。我無法提取它所遵循的分辨率模式,這意味着某些分辨率工作正常,有些則不行。我不知道爲什麼。
現在的問題是,如果用戶嘗試創建具有不兼容分辨率的紋理,那麼OpenGL應該會捕獲錯誤,並且如果紋理未創建,我應該得到0,但glTexImage2D沒有返回任何東西,因此我們無法爲用戶確定。 「這個決議不被支持,不要使用它。」但問題是OpenGL不會捕獲glTexImage2D錯誤。
在運行時刻執行
cout<<until here working fine..<<endl;
glTexImage2D(......) run-time execution stops here and windows gives not responding error.
cout<<"output of something that never executed"<<endl;
Here If I use glGetError() it never works. Because windows gives error in glTexImage2D.
那麼,是有人知道我怎麼能趕上glTexImage2D錯誤。如果它給出錯誤,我顯示OK「不要使用這個圖像,使用另一個。」並返回0.
如何實現此任務? 我也想過僅限於某些分辨率的用戶,但這不是解決方案。對 ?
模式明智的,我只能看到非工作紋理是不是4個像素寬的倍數。 – JasonD
我這麼認爲,你是對的。那麼你認爲我可以用這種方式來限制嗎? if(imgW%4 == 0)然後創建紋理。對 ? – furqan
你不應該,似乎有一個不同的基本問題。你確定你的圖片數據對於那些非工作尺寸有效嗎?即您的圖像加載器是否傳遞了glTexImage的僞指針? – JasonD