我正在研究一个计算某些多边形质心的程序。我有质心计算。我想用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
}
答案 0 :(得分:0)
如果你从opengl的画面上下文中调用你的draw()
函数,你应该没问题。这意味着你的draw()
当然还必须调用opengl相应的绘制调用。
我对objective-c上的opengl不太熟悉,但您可以将绘图上下文传递给draw()
函数并让它以drawRect
的方式调用。