【发布时间】:2011-06-11 18:25:48
【问题描述】:
我正在尝试修改 accepted answer of this question 以在 Cocoa 应用程序中工作。
我创建了一个名为 OpenGLView 的类,它是 NSOpenGLView 的子类,在我的 Xib 文件中,我有一个带有自定义类 OpenGLView 的 OpenGL 视图。
我已经使我的 OpenGLView 类实现如下:
#import "OpenGLView.h"
#include <OpenGL/OpenGL.h>
#include <OpenCL/OpenCL.h>
@implementation OpenGLView
- (id)initWithFrame:(NSRect)frame
{
self = [super initWithFrame:frame];
if (self) {
}
return self;
}
- (void)dealloc
{
[super dealloc];
}
- (void)drawRect:(NSRect)dirtyRect
{
glClearColor(1.0f, 1.0f, 1.0f, 0.0f);
glShadeModel(GL_FLAT);
glEnableClientState(GL_VERTEX_ARRAY);
float data[][2] = {{50,50},{100,50},{75,100}};
glGenBuffers(1,&ID);
glBindBuffer(GL_ARRAY_BUFFER, ID);
glBufferData(GL_ARRAY_BUFFER, sizeof(data), data, GL_STATIC_DRAW);
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.0f,0.0f,0.0f);
glBindBuffer(GL_ARRAY_BUFFER, ID);
glVertexPointer(3, GL_FLOAT, 3*sizeof(float), 0);
glDrawArrays(GL_TRIANGLES,0,3);
glFlush();
}
@end
基本上,(glewInit() 除外)我复制了 init 方法并将display() 函数的内容复制并粘贴到我的-(void)drawRect 方法中。当我运行程序时,我没有收到任何错误或警告,也没有运行时错误,但我只得到一个没有三角形的黑屏。但是,有一个白屏,就像glClear(GL_COLOR_BUFFER_BIT) 应该做的那样。
【问题讨论】: