首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >带NSOpenGLView的OpenGL 3.2

带NSOpenGLView的OpenGL 3.2
EN

Stack Overflow用户
提问于 2012-07-23 01:24:45
回答 1查看 5.6K关注 0票数 6

如何在NSOpenGLView的自定义实现中创建核心配置文件?我应该重写哪个方法,应该把什么代码放在那里?

到目前为止,我有以下代码:

代码语言:javascript
运行
复制
// 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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-13 22:55:36

苹果公司有一个名为GLEssentials的示例代码项目,它确切地展示了如何做到这一点(请注意,它是Mac和iOS的示例代码项目)。

实际上,您需要继承NSOpenGLView (示例代码中的NSGLView类)的子类,并使用以下代码实现awakeFromNib方法:

代码语言:javascript
运行
复制
- (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];
}

还要记住,如果使用从3.2API中删除的任何OpenGL应用程序接口调用,您的应用程序将崩溃。这是3.2规范的PDF document,因此您可以看到这些更改。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11602406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档