Форум программистов, компьютерный форум, киберфорум
Lazarus
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
2 / 2 / 0
Регистрация: 24.10.2013
Сообщений: 125
1

OpenGL бегущая строка

28.04.2016, 11:56. Показов 1856. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте.
Нужно сделать информационное поле, где будет выводиться разнообразный текст в заданные поля. И если размер текста превышает габариты поля, текст должен начать прокручиваться(Бегущая строка).
Работаю я под Linux-ом.
Все возможные варианты движущегося текста при реализации дергались, я подумал может используя OpenGL получится сделать плавное движение. С OpenGL работаю в первые, и вот что я сделал
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var
l : integer = 640;
procedure DrawGLScene; cdecl;
begin
  dec(l);
  if l < -100 then l :=640;//Хотел что-бы текст полностью выбегал и только потом появлялся вновь. Но не получилось=)
                                  // При достижении текста 0-й точки он просто исчезал.
 
  glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
 
  glEnter2D;
 
  glColor3f(1, 1, 1);
  glWrite(l, glGetViewportHeight - 60, GLUT_BITMAP_9_BY_15, 'GLUT_BITMAP_9_BY_15');
  
  glLeave2D;
 
  glutSwapBuffers;
 
  FrameRendered;
end;
Процедурка glWrite и прочие:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
procedure glEnter2D;
begin
  glMatrixMode(GL_PROJECTION);
  glPushMatrix;
  glLoadIdentity;
  gluOrtho2D(0, glGetViewportWidth, 0, glGetViewportHeight);
 
  glMatrixMode(GL_MODELVIEW);
  glPushMatrix;
  glLoadIdentity;
 
  glDisable(GL_DEPTH_TEST);
end;
 
procedure glLeave2D;
begin
  glMatrixMode(GL_PROJECTION);
  glPopMatrix;
  glMatrixMode(GL_MODELVIEW);
  glPopMatrix;
 
  glEnable(GL_DEPTH_TEST);
end;
procedure glWrite(X, Y: GLfloat; Font: Pointer; Text: String);
var
  I: Integer;
begin
  glRasterPos2f(X, Y);
  for I := 1 to Length(Text) do
    glutBitmapCharacter(Font, Integer(Text[I]));
end;
Но такой вариант то-же дергается. Более того как только левая точка битмапа уходила за левую границу заданного поля весь битмап исчезал, а не плавно уезжал за приделы видимости как хотелось.
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.04.2016, 11:56
Ответы с готовыми решениями:

"Бегущая строка" в компоненте Label
Здравствуйте. Моё приложение должно подгружать из файла данные, и отображать их на экран. В...

Бегущая строка
Помогите составить программубегущая строка. Она должна предусматривать возможность задания с клав...

Бегущая строка в Delphi
Ребят подскажите как реализовать, при нажатии на кнопку выводиться бегущая строка содержащая...

Бегущая строка внизу экрана
Создаю плеер. Хочу чтобы при воспроизведении трека, на экране появлялась надпись как в аимпе, но в...

0
28.04.2016, 11:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.04.2016, 11:56
Помогаю со студенческими работами здесь

Апплет "бегущая строка", найти ошибку, строка не останавливается и бежит по второму кругу
Заранее извиняюсь если не туда написал, суть вопроса: у меня стоит задача написать апплет, в...

Бегущая строка
Бегущая строка обрезается &lt;div class=&quot;str&quot;&gt; &lt;marquee scrolldelay=&quot;0&quot;...

Бегущая строка
Бегущая строка Программа читает записанный в файле текст и выводит его в виде бегущей строки,...

Бегущая строка
Нужна написать яваскрипт бегущей строки с права налево в строке состояния браузера ( которая есть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru