我试图了解如何使用 glClearBuffer* 在 Cocoa for OS X 中更改(单缓冲或双缓冲)NSOpenGLView 中的背景颜色。
OpenGL Superbible 建议的以下代码片段因 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