互換性のない画像テクスチャ解像度に起因するエラーをキャッチしようとしています
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エラーをキャッチできるか知っている人はいますか?エラーが発生した場合は、「この画像は使用しないで、別の画像を使用してください」と表示します。そして0を返します。
このタスクを達成する方法は?また、一部の解像度でのみユーザーを制限することも考えましたが、これは解決策ではありません。右 ?