OpenGL 3.2 w/ NSOpenGLView

Как создать профайл ядра в пользовательской реализации NSOpenGLView? Какой метод я должен переопределить и какой код я должен поместить туда?

пока у меня есть этот код:

// Header File
#import <Cocoa/Cocoa.h>

@interface TCUOpenGLView : NSOpenGLView

@end

// Source File
#import "TCUOpenGLView.h"
#import <OpenGL/gl.h>

@implementation TCUOpenGLView

- (void)drawRect:(NSRect)dirtyRect {
    glClear(GL_COLOR_BUFFER_BIT);
    glFlush();
}

@end

1 ответов


Apple имеет пример проекта кода под названием GLEssentials Это показывает, как именно это сделать (обратите внимание, что это пример проекта кода Mac OS X и iOS).

по существу вам нужно будет подкласс NSOpenGLView (класс NSGLView в примере кода) и реализовать метод awakeFromNib, используя следующее:

- (void) awakeFromNib
{   
    NSOpenGLPixelFormatAttribute attrs[] =
    {
        NSOpenGLPFADoubleBuffer,
        NSOpenGLPFADepthSize, 24,
        // Must specify the 3.2 Core Profile to use OpenGL 3.2
        NSOpenGLPFAOpenGLProfile,
        NSOpenGLProfileVersion3_2Core,
        0
    };

    NSOpenGLPixelFormat *pf = [[[NSOpenGLPixelFormat alloc] initWithAttributes:attrs] autorelease];

    if (!pf)
    {
        NSLog(@"No OpenGL pixel format");
    }

    NSOpenGLContext* context = [[[NSOpenGLContext alloc] initWithFormat:pf shareContext:nil] autorelease];

    [self setPixelFormat:pf];

    [self setOpenGLContext:context];
}

также помните, что если вы используете любые вызовы API OpenGL, которые были удалены из API 3.2, ваше приложение аварийно завершит работу. Вот это в формате PDF документ спецификации 3.2, чтобы вы могли видеть изменения.