使用OpenGL识别调用draw()方法的对象

时间:2012-05-25 20:02:17

标签: objective-c opengl-es opengl-es-2.0

有没有办法确定哪个对象正在调用draw方法。

创建:

joint.model = [[Box alloc] init];

主叫代码:

    [joint.model draw];

draw方法(在Box类中):

-(void)draw
{   
        glBindVertexArrayOES(_boxVAO);
        glDrawArrays(GL_TRIANGLES, 0, 7055*3);
}

如何在绘图方法中收到joint对象?

如果需要更多课程信息,我可以附上,但我没有假设,因为它不多。

1 个答案:

答案 0 :(得分:1)

model对象需要指针返回joint才能在-draw方法中使用它。因此,您需要修改Box类以获得指向joint类型的指针,或者如果Box由您正在使用的框架定义,则需要对其进行子类化。所以你可以这样做:

@class Box {
   Model* model; // Or whatever type model is.
}

如果那不是一个选项,你可以这样做:

@class BetterBox : Box {
    Model* model; // Or whatever type model is.
}

并确保model.joint的创建方式如下:

model.joint = [[BetterBox alloc] init]; // or [[Box alloc] init] if you modified the Box class
[model.joint setModel:model];

然后在您的绘制方法中,您可以像这样访问model

- (void)draw
{
    [model someMethod];
    //... etc. ...
}