ユーザーがココア オープン ファイル ダイアログ (NSOpenPanel) を使用してマップ/レベルを選択できる小さな SDL/OpenGL ゲームを作成しています。ただし、そうすると、glClear のたびに「無効なフレーム バッファ操作」というエラーが表示されます。(glCheckFramebufferStatus を使用して) フレーム バッファのステータスを取得すると、GL_FRAMEBUFFER_UNDEFINED (0x8219) になります。また、開いているパネルを (runModal を使用して) 表示する必要はなく、作成するだけでエラーが発生することにも気付きました。SDL_SetVideoMode の前に作成することは可能ですが、その後はできません。奇妙なことに、NSSavePanel はこれらの問題をまったく引き起こしません。何か案は?
編集:簡素化された test-init メソッドを表示するコードを追加しました:
SDL_Init( SDL_INIT_VIDEO );
m_pScreen = SDL_SetVideoMode( 800, 600, 32, SDL_OPENGL );
// this section causes the problem. Works well if I change the NSOpenPanel to a NSSavePanel
@autoreleasepool {
NSOpenPanel *openPanel = [[NSOpenPanel openPanel] retain];
[openPanel runModal];
[openPanel release];
}
int number = glCheckFramebufferStatus(GL_FRAMEBUFFER);
assert(number == GL_FRAMEBUFFER_COMPLETE); // crash here