TAO+SimpleGLControl реагирует на мышь и клаву чередованием кадров

Друзья, подскажите плиз в чем дело. Значит вот у меня в форме SimpleGLControl. При движении по нему мышью или нажатии клавиш клавиатуры начинается чередование предыдущего и текущего кадров. Можно ли как то побороть сий недуг?
0       2808        08.01.2012        18

0  
08.01.2012 00:00:00
Можно поподробней, выложите скришоты.
0  
08.01.2012 00:00:00
Вот текущий кадр
Вот предыдущий
то есть что сделал — изменил цфет фона, был белый, стал серый, двигаю мышкой по контролу возвращается белый, еще двигаю возвращается серый, то есть чередуются предыдущий и текущий кадры
0  
08.01.2012 00:00:00
И код не помешал бы.
0  
08.01.2012 00:00:00
Я кажется понял. Прежде чем прорисовывать сцену с новым цветом для начало нужно ее очистить, тоесть очистить буферы цвета и глубины.
0  
08.01.2012 00:00:00
Ниже код отрисовки. Вроде как буфер очищаю. Тут не только цвет возвращается. Если я отрисовал сперва квадрат, а потом треугольник например, будет возвращаться треугольник, то есть возвращается полностью предыдущий кадр со всеми его цветами и нарисованными объектами.
private void Draw()
{

Gl.glClearColor((float)backgrR/255, (float)backgrG/255, (float)backgrB/255, 1);
Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);
Gl.glLoadIdentity();
Gl.glTranslatef(0, 0, -3);
Gl.glPushMatrix();
Gl.glColor3f((float)fR/255, (float)fG/255, (float)fB/255);
switch (comboBox1.Text)
{
case «Треугольник»:
{
DrawTriangle();
break;
}
case «Квадрат»:
{
DrawQuad();
break;
}
case «Круг»:
{
DrawСircle();
break;
}
case «Ромб»:
{
DrawDiamond();
break;
}
case «Шестигранник»:
{
DrawHexagon();
break;
}
default:
{
return;
}
}

Gl.glPopMatrix();
Gl.glFlush();
AnT.Invalidate();
}
0  
08.01.2012 00:00:00
Gl.glClear(Gl.GL_DEPTH_BUFFER_BIT|Gl.GL_COLOR_BUFFER_BIT);
0  
08.01.2012 00:00:00
Попробовал так — ситуация не меняется.
0  
08.01.2012 00:00:00
Как вариант меня устроит запрет событий мышки и клавы на конроле, то есть чтобы курсор нельзя было навести на контрол, покликать по нему и т.д. Если есть решение как это сделать подскажите, сам я новичок в C#.NET, долго буду ковырятся.
0  
08.01.2012 00:00:00
Эм, на счет кода, зачем так напрягать?
0  
08.01.2012 00:00:00
Gl.glColor3f(255, 255,255); этого хватит.
0  
08.01.2012 00:00:00
Gl.glColor3f((float)fR/255, (float)fG/255, (float)fB/255) — таким образом задается цвет фигуры. Чтобы юзер мог задать цвет фигуры.
0  
08.01.2012 00:00:00
в glColor3f праметры RGB от 0 до 1 если че.
0  
08.01.2012 00:00:00
Так что насчет перемены кадров при наведении мыши — мысли есть? Глюк видюхи?
0  
08.01.2012 00:00:00
Плиз кинь ссылку на проект, можешь залить или на другой файлообменик. Еще мож кинуть в скайп flashinhell. Полностью с проектом легче будет разобраться, что не так.
0  
09.01.2012 00:00:00
Да в принципе при анимации, то есть при частой отрисовке кадров такой проблемы нет, что самое главное, так что жить можно. Просто попробуйте у себя отрисовать один раз один кадр и потом какой нибудь другой, без постоянной отрисовки кадров, не запуская цикл glutMainLoop опроса событий OpenGL
0  
08.01.2012 00:00:00
мот ты рисуешь в 2 буфера и не меняешь их? (у тебя там glFlush попробуй SwapBuffers вот только не знаю что там в шарпе на С++ с глутом есть glutSwapBuffers(void))
0  
09.01.2012 00:00:00
В контроле свойство AutoSwapBuffer стоит true.
0  
09.01.2012 00:00:00
выложи код рисования квадрата и еще чего небуть
и попробуй убрать glLoadIdentity();
вместо него напиши glPushMatrix и в конце 2 раза вынимай
^