Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Звук, графика и видео > OpenGL: Эффект помехов


Автор: Ripper 11.1.2005, 22:53
Как сделать такую вещь? Рандомом вывести точки можно.. но помойму эффект не будет красочнум.. надо сделать что то вроде помехов как по телеку или ещё по чему.. ну вот как в картинке тока анимированно все... Можно поставить таймер и случайно генерировать координаты... но как сгенерировать либо Серый цвет либо Черный.. да и размер соответствующий... хм..
http://ripper89.nm.ru/Picture.JPG

Автор: Zero 12.1.2005, 10:41
Цитата(Ripper @ 11.1.2005, 22:53)
надо сделать что то вроде помехов как по телеку или ещё по чему..
smile
Как тебе такое:
1. В разделе Uses ввести имя модуля OpenGl;
2. В разделе Var в качестве глобальной переменной:
Код

R,G,B:real;

3. В событии для создания формы:
Код

procedure TForm1.FormCreate(Sender: TObject);
var
 pfd:TPixelFormatDescriptor;
 nPixelFormat:integer;
begin
 randomize;
 FillChar(pfd,sizeof(pfd),0);
 nPixelFormat:=ChoosePixelFormat(Canvas.Handle, @pfd);
 SetPixelFormat(canvas.Handle, nPixelFormat, @pfd);
end;

4. В процедуре отрисовки формы:
Код

procedure TForm1.FormPaint(Sender: TObject);
var
 hrc:HGLRC;
begin
 hrc:=wglCreateContext(Canvas.Handle);
 wglMakeCurrent(canvas.Handle, hrc);

 glBegin(GL_quads);
   glColor3f(R,G,B);
   glVertex2f(-1,-1);
   glVertex2f(-1,1);
   glVertex2f(1,1);
   glVertex2f(1,-1);
 glEnd();

 glFinish();
 wglMakeCurrent(0,0);
 wglDeleteContext(hrc);
end;

5. Брось на форму таймер, и на него:
Код

procedure TForm1.Timer1Timer(Sender: TObject);
begin
 R:=random(100)/100;
 G:=random(100)/100;
 B:=Random(100)/100;
 InvalidateRect(handle, nil, false);
end;

Добавлено @ 10:42
Чють не забыл, интервал таймера поставь 10. smile

Автор: Ripper 12.1.2005, 17:57
Это плоскости же рисуются?? А мне надо как на ссылке выше.. точками)
Код выше я так понимаю рисует рандомно белые черные плоскости... но енто не то
кстати что такое glFinish(); ?

Автор: Zero 13.1.2005, 00:44
Цитата(Ripper @ 12.1.2005, 17:57)
я так понимаю рисует рандомно белые черные плоскости...

Не совсем, он из всей палитры цветов выбирает на рандоме любые. Ты лучше проверь...
Цитата(Ripper @ 12.1.2005, 17:57)
что такое glFinish();

Закончить рисование.

Автор: Ripper 13.1.2005, 17:05
ну дык это все равно не то... в той проге где я это увидел используется эта картинка т.е. её загружают из файла.. ы
Если есть желание и возможнсти можно дему эту скачать)) 5 мег но очень понравилась
Volition - Nehe Creative Demo Contest 2003
http://www.sulaco.co.za/opengl.htm

Автор: Zero 13.1.2005, 18:41
Короче я советую тебе прочитать какую-нибудь инфу, например у Посола есть вверху темя с полезными ссылками, в часности раз у тебя помехи на двумерной плоскости, советую тебе скачать вот такую тему OpenGL. Часть 1. Инициализация OpenGL и простейшие построения. (рус, pdf, 520кб). Там неплохо описано задание объектов, и соответственно перемещение их в пространстве.

Автор: Ripper 13.1.2005, 20:50
Я читал книгу Краснова но все же.. как сделать енти помехи которые на картинке??
Я думаю построение куба сферы цилиндра диска и т.д. не понадобятся..

Автор: Zero 14.1.2005, 11:23
Цитата(Ripper @ 13.1.2005, 20:50)
как сделать енти помехи которые на картинке??

Можно накласть текстуры, но я если честно не проверял, на постоянную их перерисовку. smile Хотя теоретически должно работать.

Автор: Zero 14.1.2005, 13:59
Ripper проверь свой е-маил, я тебе скинул ещё один способ, написаный выше, мной... Он работает. smile

Автор: Ripper 14.1.2005, 16:54
упс.. у меня терь [email protected]
а зачем пример выше? тот который прямоугольники рисует? Это не то.. надо точкаи как на картинке

Автор: Zero 14.1.2005, 17:47
Цитата(Ripper @ 14.1.2005, 16:54)
а зачем пример выше?

Да не выше, а который словами я описал (с использованием текстур). А то как у тебя на картинке, переделать из моего будет 10 мин. работы, т.е. поставишь др. bmp-файлы, и всё (главное их рамер должен быть 64*64 -смотри не перепутай, а то работать не будет). Я скинул заново.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)