Я пытаюсь создать приложение OpenGL, используя Cocoa API, и к настоящему времени все работает отлично, за исключением одного. При изменении размера главного окна контекст GL не обновляется должным образом.
Вот код, используемый для настройки окна и отображения контекста.
Главное окно:
m_window = [[NSWindow alloc] initWithContentRect:window_rect
styleMask:( NSClosableWindowMask |
NSMiniaturizableWindowMask |
NSTitledWindowMask | NSResizableWindowMask )
backing:NSBackingStoreBuffered defer:YES];</p>
<pre><code>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];
Просмотр OpenGL:
NSOpenGLPixelFormatAttribute attrs[] = {NSOpenGLPFADoubleBuffer, NSOpenGLPFAWindow, NULL};</p>
<pre><code>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];
Это должно работать, однако при изменении размера окна и после обновления представления OpenGL и области просмотра содержимое заднего буфера, похоже, неправильно масштабируется. Что с этим не так?
Спасибо за ваши ответы.