用OpenGL绘图

时间:2013-09-30 21:39:49

标签: objective-c opengl

我正在研究一个计算某些多边形质心的程序。我有质心计算。我想用OpenGL显示多边形。我已经启动并运行了一个OpenGL窗口。

在OpenGL类中有一个方法drawRect,您可以在其中“绘制”顶点到屏幕。然而,我有一个我想在一个单独的多边形类中绘制的顶点。理想情况下,我想在多边形上调用draw方法,例如

firstPolygon.draw();

但是我不知道怎么做,因为drawRect方法在OpenGL类中,这是我知道绘制的唯一方法。我可以以某种方式从Polygon类中向draw方法发送数据吗?或者直接绘制到多边形类中的屏幕?

目前'OpenGLView.m'包含:

#import "OpenGL/gl.h"
#import "OpenGLView.h"
#import "Poly.h"

@implementation OpenGLView

-(id)initWithFrame:(NSRect)frameRect
{
    self = [super initWithFrame:frameRect];
    if(self){
         // initialise things here
    }    
    return self;
}

-(void)drawRect:(NSRect)Rect
{
    glClearColor(1.0f,1.0f,1.0f,1.0f);
    glClear(GL_COLOR_BUFFER_BIT);

    glColor3f(0.0f, 0.0f, 0.0f);
    glBegin(GL_LINE_LOOP);
    {
        glVertex3f(  0.0,  0.6, 0.0);
        glVertex3f( -0.2, -0.3, 0.0);
        glVertex3f(  0.2, -0.3 ,0.0);
    }
    glEnd();

    // finish drawing
    glFlush();
}
@end

我希望在这个方法中绘制'Polygon'类,这样我就可以轻松地引用存储的顶点..

-(void)drawPolygon
{
    // draw vertices
}

1 个答案:

答案 0 :(得分:0)

如果你从opengl的画面上下文中调用你的draw()函数,你应该没问题。这意味着你的draw()当然还必须调用opengl相应的绘制调用。

我对objective-c上的opengl不太熟悉,但您可以将绘图上下文传递给draw()函数并让它以drawRect的方式调用。