Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Lazarus, Free Pascal, CodeTyphon
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.06.2016, 16:41   #1
Maguark
 
Регистрация: 15.04.2015
Сообщений: 3
По умолчанию Движение и OpenGL

День добрый.
Нужно сделать на форме информационное поле в котором если текст не влезает в поле, то он должен начать прокручиваться(Бегущая строка).
Пробовал множество вариантов все дёргаются.
В итоге обратился за помощью в DirectX, и под виндой написал плавно бегущую строку. Но ситуация поменялась и нужно всё писать под Linux. Под Linux-ом пишу в Lazarus-е, как нам известно в Linux нет DirectX и я думал, что OpenGL мне поможет. Имея малый опыт программирования и впервые столкнувшись с OpenGL я написал такой код:
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 и прочие:

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;

И всё-же текст дёргается при движении.
Все варианты анимации на OpenGL, что я нашел в интернете, все то-же дергаются.
Maguark вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Движение колец и Движение линий сверху Iren1993 Помощь студентам 2 07.11.2011 19:48
OpenGL. Независимое движение объектов. Krechet Мультимедиа в Delphi 7 24.04.2010 21:37
OpenGL движение обьектов Krechet Мультимедиа в Delphi 8 31.01.2010 21:10
Движение обьекта в OpenGL Delphi Krechet Помощь студентам 0 24.01.2010 14:22
Движение объекта по точкам(OpenGl).Подскажите. spamer Общие вопросы Delphi 12 10.04.2009 17:06