J'essaye de créer une application OpenGL en utilisant Cocoa API, et maintenant tout fonctionne correctement, sauf pour une chose. Lorsque la fenêtre principale est redimensionnée, le contexte GL ne semble pas correctement mis à jour.Erreur lors de la création de NSOpenGLView
Voici le code utilisé pour configurer le contexte de fenêtre et de rendu.
fenêtre principale:
m_window = [[NSWindow alloc] initWithContentRect:window_rect styleMask:(NSClosableWindowMask | NSMiniaturizableWindowMask | NSTitledWindowMask | NSResizableWindowMask) backing:NSBackingStoreBuffered defer:YES];
window_title = [NSString stringWithCString:m_window_title->c_str()
encoding:NSUTF8StringEncoding];
window_color = [NSColor colorWithCalibratedRed:m_window_color->getRed()
green:m_window_color->getGreen()
blue:m_window_color->getBlue()
alpha:m_window_color->getAlpha()];
if (m_centered)
{
[m_window center];
}
[m_window setTitle:window_title];
[m_window setBackgroundColor:window_color];
[m_window setOneShot:YES];
[m_window setOpaque:YES];
[m_window setDelegate:window_delegate];
[m_window setAcceptsMouseMovedEvents:YES];
vue OpenGL:
NSOpenGLPixelFormatAttribute attrs[] = {NSOpenGLPFADoubleBuffer, NSOpenGLPFAWindow, NULL};
pixel_format = [[NSOpenGLPixelFormat alloc] initWithAttributes:attrs];
m_view = [[NSOpenGLView alloc] initWithFrame:[m_window contentRectForFrameRect:[m_window frame]]
pixelFormat:pixel_format];
[pixel_format release];
GLint dim[2] = {GB_DEF_WINDOW_WIDTH, GB_DEF_WINDOW_HEIGHT};
CGLContextObj ctx = (CGLContextObj) [[m_view openGLContext] CGLContextObj];
CGLSetParameter(ctx, kCGLCPSurfaceBackingSize, dim);
CGLEnable (ctx, kCGLCESurfaceBackingSize);
[[m_view openGLContext] makeCurrentContext];
[m_window setContentView:m_view];
Cela devrait fonctionner, mais lorsque la fenêtre est redimensionnée et après la mise à jour vue OpenGL et la fenêtre , le contenu du tampon arrière ne semble pas être rééchelonné correctement. Qu'est-ce qui ne va pas avec ça?
Merci pour vos réponses.