0

当我的程序启动时,它必须在背景上显示一个圆圈。此外,我必须控制所有显示圆圈。我使用class VertexControllerandclass Vertex来达到这个目的。在Vertex我有构造函数:

Vertex::Vertex(const ci::Vec2f & CurrentLoc){

    vColor = Color(Rand::randFloat(123.0f),Rand::randFloat(123.0f),Rand::randFloat(123.0f));
    vRadius = Rand::randFloat(23.0f);
    vLoc = CurrentLoc;
}

VertexController我有

VertexController::VertexController()
{
    Vertex CenterVertex = Vertex(getWindowCenter());
    CenterVertex.draw();  // function-member draw solid circle with random color
}

setup{}我写的方法中

void TutorialApp::setup(){
    gl::clear(Color(255,204,0));
    mVertexController=VertexController();
}

不幸的是,我的方法不起作用。我只看到背景。所以主要问题 - 在 CINDER_APP_BASIC 中只能直接在 draw{},update{},setup{} 中绘图?如果是,请提出解决方案,否则请说出我的失败之处。

4

1 回答 1

1

这行代码对我没有任何意义:

mVertexController=VertexController();

无论如何,你应该使用 draw() 函数来绘制圆圈到窗口。这就是为什么默认情况下gl::clear(Color(0,0,0)); 要清除背景并从头开始绘制新帧的原因(这是在 Cinder 中默认使用的 OpenGL 中绘制的方式)。

我建议使用Vector容器来存储所有圆圈(这样你可以通过一些努力即时添加和删除圆圈),在VertexController构造函数中添加第一个,并使用 for 循环创建单独的函数VertexController::draw()来绘制所有圆圈。

于 2014-04-02T13:21:55.760 回答