TOpenGLControl нет рендеринга когда нажат TScrollBar

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

TOpenGLControl нет рендеринга когда нажат TScrollBar

Сообщение UnКайF » 21.02.2013 14:36:43

На форме присутствует OpenGlControl и ScrollBar. Когда я нажимаю мышью на ScrollBar, изображение перестаёт рендерится. Почему ?

Куски моего кода (любитель я, сильно не бейте плз.):
Код: Выделить всё
procedure TForm1.FormCreate(Sender: TObject);
begin
  OpenGLControl1:=TOpenGLControl.Create(Self);
  with OpenGLControl1 do begin
    Name:='OpenGLControl1';
    Align:=alNone;
    Parent:=Self;
    OnPaint:=@OpenGLControl1Paint;
    AutoResizeViewport:=false;
    SetBounds(OscLeft,OscTop,OscWidth+OscLeft,OscHeight+OscTop);
  end;
  Application.AddOnIdleHandler(@OnAppIdle);
//*************************************************
end;

procedure TForm1.OpenGLControl1Paint(Sender: TObject);
begin
  glClearColor(0, 0, 0, 0); //четвертый параметр - алфа
  glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); //очистка буферов цвета и глубины
  glEnable(GL_DEPTH_TEST); //тест глубины включен (используется для НЕрисования невидимых частей)
  glMatrixMode(GL_PROJECTION); //управление проекцией матрицы включено
  glLoadIdentity(); //сброс матрицы
  glOrtho( -1, 1, -1, 1, -1, 1);
  //gluPerspective(45.0, 1, -1, 1.0); //использовать перспективу и задать её параметры
  //(угол нашего обзора, измеряемый в градусах вдоль оси Y,
  //видимая часть оси X - width/height,
  //Третий аргумент задает параметр для ближнего отсечения. Каждое значение Z, меньшее этого параметра, будет отсекаться,
  //Четвертый параметр — это параметр для дальнего отсечения. Всякое значение, большее передаваемого параметра, отображаться не будет)
  glMatrixMode(GL_MODELVIEW); //управление видом матрицы включено
  glLoadIdentity(); //сброс матрицы
  glTranslatef(0.0, 0.0,1); //смещение точки отсчета координат (dx,dy,dz)
  //  glRotatef(cube_rotationx, cube_rotationy, cube_rotationz, 0.0); //поворот системы координат
  // на (угол,вектор х компонента, у, z)
  glLineWidth(3);
  //  glEnable(GL_LINE_SMOOTH); //включить сглаживание
  glBegin(GL_Lines);
    glColor3f(0.0,0.0,1.0);
    glVertex3f(-1,-1,-1);
    glVertex3f(1,-1,-1);
    //****здесь  рисуются данные принятые из потока*****
  glEnd();
  OpenGLControl1.SwapBuffers; // показать нарисованное/скрыть старое
end;

procedure TForm1.OnAppIdle(Sender: TObject; var Done: Boolean);
begin
  OpenGLControl1.Invalidate;
  Done:=true;
end;



Добавлено спустя 20 часов 31 минуту 29 секунд:
Проблема исчезает при замене ScrollBar на TrackBar. Всётаки хотелось бы услышать ответ на сабж.
UnКайF
незнакомец
 
Сообщения: 2
Зарегистрирован: 21.02.2013 12:15:54

Re: TOpenGLControl нет рендеринга когда нажат TScrollBar

Сообщение UnКайF » 23.02.2013 23:31:13

Блин, чё, никто не знает ?
UnКайF
незнакомец
 
Сообщения: 2
Зарегистрирован: 21.02.2013 12:15:54


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 258

Рейтинг@Mail.ru