0

我正在开发一个程序,它将计算一些多边形的质心。我有质心计算。我想用 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

还有我想用这个方法绘制的“多边形”类,这样我就可以轻松地引用存储的顶点..

-(void)drawPolygon
{
    // draw vertices
}
4

1 回答 1

0

如果你draw()在opengl中从屏幕绘制的上下文中调用你的函数,你应该没问题。这意味着您draw()当然仍然必须调用 opengl 适当的绘图调用。

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

于 2013-09-30T21:43:19.903 回答