1
我無法獲得NSOpenGLContext的工作。 我有一個靜態對象(3D引擎)辦理所有OpenGL的東西,資源,維也納組織等。NSOpenglContext資源,呈現錯誤
對於可可版本,我創建了一個NSOpenGLContext這樣的:
- (BOOL) CreateContext
{
[NSOpenGLContext clearCurrentContext];
NSOpenGLPixelFormatAttribute attributes [] =
{
NSOpenGLPFAWindow,
NSOpenGLPFADoubleBuffer,
NSOpenGLPFAAccelerated, // If present, this attribute indicates that only hardware-accelerated renderers are considered.
NSOpenGLPFAPixelBuffer, // If present, this attribute indicates that rendering to a pixel buffer is enabled.
NSOpenGLPFAColorSize, 32,
NSOpenGLPFADepthSize, 24,
NSOpenGLPFAStencilSize, 8,
(NSOpenGLPixelFormatAttribute)nil
};
NSOpenGLPixelFormat* pixelFormat = [[NSOpenGLPixelFormat alloc] initWithAttributes:attributes];
NSOpenGLContext* pContext = [[NSOpenGLContext alloc] initWithFormat: pixelFormat shareContext:nil];
if (pContext)
{
[pContext makeCurrentContext];
m_pOGLContext = pContext;
// Vertical Sync
GLint vblSynch = 0; // disable vsync
[pContext setValues:&vblSynch forParameter:NSOpenGLCPSwapInterval];
glFrontFace(GL_CW);
// Set the clear Color
glClearColor(0, 0, 0, 0);
[pixelFormat release];
return true;
}
[pixelFormat release];
return false;
}
發動機初始化之後,我創建了一個NSView。 所述的NSView創建之後,在prepareOpenGL FUNC,我剛NSOpenGLContext構件從發動機設置爲當前NSOpenGLContext:
- (void) prepareOpenGL
{
m_pOGLContext = [NSOpenGLContext currentContext];
return;
}
然後,在一個NSView的功能lockFocus我設置用於上下文中的視圖:
- (void)lockFocus
{
[super lockFocus];
if ([m_pOGLContext view] != self)
{
[m_pOGLContext setView:self];
}
[m_pOGLContext makeCurrentContext];
}
現在,當繪圖時我無法獲取繪製資源,我只是有很多緩衝器工件。
我試圖用共享選項爲NSView創建第二個上下文,但我有相同的結果。
你刷新使用「MAC方式」緩衝區?我不認爲glFlush()在我之前爲我工作,我不得不使用NSOpenGLContext的flushBuffer。 – TheAmateurProgrammer
嗨,glflush正在爲我工作,事實上我第一次使用靜態上下文,沒關係。問題發生在我銷燬視圖的時候,創建另一個再次使用靜態上下文的視圖。 – Ziggy