Здравствуйте.
Подскажите, пожалуйста, каким образом прописать перерисовку объекта
Тут рассчитывается значение
contact:
void GLWidget::touching(int trancleted){
radius1 = 4.0;
radius2 = 2.0;
tooth_size_1 = 0.7;
tooth_size_2 = 0.7;
if((radius1 - (radius2 - tooth_size_2 + trancleted )) > 0 && (radius1 - (radius2 - tooth_size_2 + trancleted)) < 3)
contact = true; // касается
else
contact = false; // НЕ касается
emit touchingGears(contact);
}
Тут у нас начальные значения отрисовки:
void GLWidget::initializeGL(){
static const GLfloat lightPos[4] = { 5.0f, 5.0f, 10.0f, 1.0f };
static const GLfloat reflectance1[4] = { 0.0f, 0.0f, 1.0f, 0.0f }; // синяя
static const GLfloat reflectance2[4] = { 1.0f, 1.0f, 1.0f, 0.0f }; // белая
static const GLfloat reflectance3[4] = { 0.0f, 0.0f, 1.0f, 0.0f }; // синяя2
...
}
Необходимо при
contact = true перерисовывать
reflectance2 синим цветом, а при
contact = false обратно в белый..
Через glColor3f() надо шаманить, что-то в этом роде?
void GLWidget::paintGL() {
if (contact = true)
glColor3f(r1,g1,b1);
else
glColor3f(r2,g2,b2);
... // отрисовка фигур
}