2013-09-30 2 views
0

Я работаю над программой, которая будет вычислять центроиды некоторых полигонов. У меня есть расчеты центра тяжести. Я хотел бы отображать полигоны с OpenGL. У меня уже есть OpenGL-окно.Рисунок с OpenGL

В классе OpenGL существует метод drawRect, где вы рисуете вершины на экране. Однако у меня есть вершины, которые я хочу рисовать в отдельном классе полигонов. В идеале я хотел бы назвать метод draw на полигоне, например.

firstPolygon.draw(); 

Но я не знаю, как бы я сделать это как метод DrawRect в классе OpenGL и тот единственный способ, которым я знаю, чтобы рисовать. Можно ли каким-либо образом отправить данные методу draw из класса Polygon? или нарисовать непосредственно на экране в классе многоугольников?

В настоящее время «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

Если вы вызываете свою функцию draw() из контекста экрана, нарисуйте opengl, вы должны быть в порядке. Это означает, что ваш draw() должен будет по-прежнему вызывать соответствующие призывы рисования.

Я не знаком с opengl на объективе-c, но вы, вероятно, можете просто передать контекст чертежа функции draw() и позвонить ему drawRect.

+0

Я не уверен, что следую за тем, как класс OpenGL не имеет экземпляра объекта многоугольника, и то же самое с классом многоугольника, не имеющим экземпляр класса opengl, поэтому я не уверен, как его получить общаться. –

+0

@PaulReed Вы всегда можете добавить свой собственный класс, который имеет функцию рисования, которая принимает контекст класса opengl. –

+0

Любые идеи о том, как передать контекст? Обычно я печатаю в контексте при работе на iOS, но работаю на Mac, это немного новое. –

Смежные вопросы