2013-09-30 86 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上工作時這有點新。 –