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

Друзья, подскажите плиз в чем дело. Значит вот у меня в форме SimpleGLControl. При движении по нему мышью или нажатии клавиш клавиатуры начинается чередование предыдущего и текущего кадров. Можно ли как то побороть сий недуг?
0      2199        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 раза вынимай
^
Регистрация
Регистрируясь, вы принимаете правила сайта. Если вы не получили код подтв. регистрации - не забудьте проверить папку спам.
Логин*
Email*
Пароль*
Подтверждение пароля*
 
Логин*
Код*
 
×
Восстановление пароля
Пожалуйста, заполните поля, после чего вы получите код подтверждения на ваш Email. Если код не пришел в течении нескольких минут - проверьте папку спам.
Логин

или Email
Логин*
Код подтверждения*
Новый пароль*
Подтверждение пароля*
×
Авторизация
  • Используйте вашу учетную запись на Facebook.com для входа на сайт.
  • Используйте вашу учетную запись VKontakte для входа на сайт.
  • Используйте вашу учетную запись Google для входа на сайт.
Авторизуйтесь с помощью соц. сети или с помощью аккаунта на сайте:
×