2013-09-30 84 views
0

我正在研究计算某些多边形质心的程序。我已经完成了质心计算。我想用OpenGL显示多边形。我已经打开并运行了OpenGL窗口。使用OpenGL绘图

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

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 
} 

回答

0

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

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

+0

0123我不确定我跟着OpenGL类没有多边形对象的实例和多边形类没有一个opengl类的实例一样 - 所以我不知道如何让他们到通信。 –

+0

@PaulReed你总是可以添加你自己的具有drawng功能的类,它可以在opengl类上下文中使用。 –

+0

关于如何传递上下文的任何想法?通常我在iOS上工作时输入上下文,但在Mac上工作时这有点新。 –