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

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

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.11.2009, 16:05   #1
Crookers
Пользователь
 
Регистрация: 07.05.2008
Сообщений: 11
По умолчанию Дорисовка в OpenGL

Такой вопрос, как можно дорисовать, к допустим уже нарисованной линии, еще одну фигуру?

Я делаю так:

Код:
glClear(GL_COLOR_buffer_bit);

glBegin(GL_POLYGON);
//координаты;
glEnd;

SwapBuffers(dc);
этим я отрисовал фигуру, а когда пытаюсь так же нарисовать еще одну, то, первая пропадает а появляеться другая, а мне нужно чтобы обе оставались.

она пропадает потому что
Код:
glClear(GL_COLOR_buffer_bit);
а без него не рисуеться вообще ничего(

Подскажите пожалуйста, как можно так сделать?
Crookers вне форума Ответить с цитированием
Старый 08.11.2009, 16:08   #2
Alex2009
Proger Man
Форумчанин
 
Аватар для Alex2009
 
Регистрация: 07.03.2009
Сообщений: 584
По умолчанию

http://vintprog.3dn.ru/load/1-1-0-42 учебник OpenGl на Delphi
ShowMessage('Добро пожаловать!');
Alex2009 вне форума Ответить с цитированием
Старый 08.11.2009, 16:28   #3
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

используйте такую конструкцию...
Код:
procedure Tpgl.WMPaint(var Msg: TWMPaint);
var ps: TPaintStruct;
begin
 BeginPaint(Handle, ps);
 if DC=0 then CreateDC;
 glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);

   setview1(FView1); // 1 объект
   setview2(FView2); // n- объект

 SwapBuffers(DC);
 EndPaint(Handle, ps)
end;


procedure tpgl.paint1;
begin
 glNewList(TXT, GL_Compile);
  
 glBegin(GL_POLYGON);
 //координаты;
 glEnd;

 glendlist
end;

procedure Tpgl.SetView1(const Value: Boolean); 
begin
 FView1:= Value;
 if value then glCallList(TXT)
end;

procedure tpgl.paint2;
begin
 glNewList(TXT2, GL_Compile);
  
 glBegin(GL_POLYGON); // 1- объект
 //координаты;
 glEnd;
 // или просто продублируйте 1 объект

 glendlist
end;

procedure Tpgl.SetView2(const Value: Boolean); 
begin
 FView2:= Value;
 if value then glCallList(TXT2)
end;
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 08.11.2009 в 16:31.
raxp вне форума Ответить с цитированием
Старый 10.11.2009, 05:32   #4
Crookers
Пользователь
 
Регистрация: 07.05.2008
Сообщений: 11
По умолчанию

Спасибо за конструкцию! я сделал именно так, но у меня новая проблема.. к тому, что нужно чтобы появлялись 2 обьекта, мне нужно чтобы каждый обьект по разному вращался..

Я для одного обьекта ставлю одно вращение, а другому другое, но почему то оба обьекта вращаются одинаково и вместе.. такое ощущение что они сливаются в одно целое..

вращаю функцией glRotatef(5,1,0,0);


Подскажи плиз, как можно сделать норм?
Crookers вне форума Ответить с цитированием
Старый 10.11.2009, 09:27   #5
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

применяйте glrotate и translatef для каждого объекта отдельно

кроме того, если у вас идет построение объекта в виде матрицы:
Код:
 glBegin(GL_QUADS); 
  glVertex3d(0,0,0); 
  glVertex3d(0,0,-1); 
  glVertex3d(1,0,-1); 
  glVertex3d(1,0,0);
...
то вы можете менять систему координат прямо в ней
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 10.11.2009 в 09:31.
raxp вне форума Ответить с цитированием
Старый 10.11.2009, 11:41   #6
Crookers
Пользователь
 
Регистрация: 07.05.2008
Сообщений: 11
По умолчанию

впринципе я так и сделал, но все равно чтото не то, не могу понять..(

вот исходник, посмотрите пожалуйста, что не так тут?
Вложения
Тип файла: rar My.rar (165.3 Кб, 10 просмотров)
Crookers вне форума Ответить с цитированием
Старый 10.11.2009, 12:12   #7
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

а где ж у вас управление? нет никакого обработчика клавиш... и потом, glRotatef(5,1,0,0); - где тут изменение? все статично
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 10.11.2009 в 12:14. Причина: прикол, глюк с вложениями. первый просмотр это 0, но после 2-го показывает правильно
raxp вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
opengl alhon Gamedev - cоздание игр: Unity, OpenGL, DirectX 2 10.10.2013 15:02
Opengl Алексадр Компоненты Delphi 4 29.09.2009 17:23
OpenGL Paul_AG C++ Builder 20 14.09.2009 19:07
OpenGL Witaliy Gamedev - cоздание игр: Unity, OpenGL, DirectX 1 01.05.2008 21:05
OpenGL prizrak1390 Свободное общение 2 07.04.2008 13:43