我想了解如何使用glClearBuffer *改變一個(無論是單或雙緩衝)NSOpenGLView背景色可可爲OS X如何使用glClearBuffer *可可OpenGLView清除顏色緩存
由OpenGL的OpenGL超級提出下面的代碼片段失敗,GL_INVALID_OPERATION:
GLfloat red[] = {1.0f, 0.0f, 0.0f, 1.0f};
glClearBufferfv(GL_COLOR, 0, red);
我需要什麼,提供了第二個參數?
我正在使用雙緩衝視圖擴展OpenGLView。
#import "MyOpenGLView.h"
#include <OpenGL/gl3.h>
@implementation MyOpenGLView
-(void) drawRect: (NSRect) bounds
{
GLfloat red[] = {1.0f, 0.0f, 0.0f, 1.0f};
glClearBufferfv(GL_COLOR, 0, red);
GLenum e = glGetError();
// e == GL_INVALID_OPERATION after this call
// and the view is drawn in black
// The following two lines work as intended:
//glClearColor(1.0, 0.f, 0.f, 1.f);
//glClear(GL_COLOR_BUFFER_BIT);
[[self openGLContext] flushBuffer];
}
@end
經過一番進一步的挖掘,您能否澄清您的應用程序中是否有3.2+核心環境?也許查詢'GL_VERSION'字符串的值。如果您在兼容性(2.1)上下文中調用核心配置文件函數,則可以生成「GL_INVALID_OPERATION」。 OS X在平臺中是獨一無二的,因爲API函數都是靜態鏈接的,因此您可以在2.1配置文件上下文中訪問3.2函數(在創建上下文之後,您不會加載函數***)。 OS X通過發出「GL_INVALID_OPERATION」來處理這種情況,並沒有做任何實際的工作。 –
是的,glGetString(GL_VERSION)報告v2.1:所以我需要做的是將上下文更改爲v3.2。謝謝! –