Когда моя программа запускается, она должна отображать круг на фоне. Также я должен контролировать все отображаемые круги. я использую class VertexController
а также class 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 {} напрямую? Если да, посоветуйте решение, еще скажите, где моя ошибка.
эта строка кода не имеет никакого смысла для меня:
mVertexController=VertexController();
В любом случае, вы должны использовать функцию draw () только для рисования кругов в окне. Это то, почему по умолчанию есть gl::clear(Color(0,0,0));
очистить фон и начать рисовать новый кадр с нуля (так работает рисование в OpenGL, используемое по умолчанию в Cinder).
Я предлагаю использовать Вектор контейнер для хранения всех кругов (таким образом, вы можете добавлять и удалять круги на лету с некоторым усилием), добавьте первый в VertexController
конструктор, и сделать отдельную функцию VertexController::draw()
нарисовать все круги, используя для цикла.
Других решений пока нет …