我正在使用一个Cocoa窗口和一个NSOpenGLView来试用OpenGL 3.2。但是,我无法让NSOpenGLView绘制红色。我只得到了一扇白窗。下面是我的代码(在NSOpenGLView的子类中):
-(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];
}
- (id)initWithFrame:(NSRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code here.
}
return self;
}
- (void)drawRect:(NSRect)dirtyRect
{
glClearColor(1.0, 0.0, 0.0, 1.0);
glClear(GL_COLOR_BUFFER_BIT);
}代码应该简单地将视图清除为红色。没有错误或警告--只有一个白色窗口。
发布于 2013-07-24 05:15:21
在调用glClear()之后,我需要使用glSwapAPPLE()来交换缓冲区
我在某处读到NSOpenGLViews不需要交换,因为它是自动完成的。根据我的经验,我可以说这完全不是真的。
发布于 2018-07-13 15:33:22
您应该使用CGLFlushDrawable()。如blow:
CGLFlushDrawable([[self openGLContext] CGLContextObj]);https://stackoverflow.com/questions/17795984
复制相似问题