Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.02.25;
Скачать: CL | DM;

Вниз

OpenGL API и double buffer   Найти похожие ветки 

 
Woolen ©   (2001-12-23 23:19) [0]

Нужно решить довольно простую задачу с анимацией в 3D. Решил использовать OpenGL. Попытался разобраться для скорости взял книгу Краснова, а он пишет, что на большинстве машин невозможно под OpenGL получить двойной буфер. Попробовал - нет дабл буфера! На другой машине - нет! Интересно, а разработчики кваки или 3D Studio Max тоже исходят при разработке из того, что на большистве машин все должно моргать и мерцать. Ведь не мерцает ни на чем! Значит есть способ! Подскажите, кто знает! Очень надо!


 
Владимир Васильев   (2001-12-24 13:06) [1]

Краснова я прочитал для ознакомления с предметом. Но работать как он советует - с нуля!!- просто невозможно. Если нужны результаты - то
GLScene : http://glscene.org/ - бесплатно и с исходниками. Отличный форум по предмету.


 
Flex   (2001-12-24 14:12) [2]

туфта полнейшая!!!
function SetDCPixelFormat(hdc:HDC):boolean;
var pfd:TPixelFormatDescriptor; // данные формата пикселей
nPixelFormat:Integer;
Begin
SetDCPixelFormat:=false;
FillChar(pfd,SizeOf (pfd),0);
With pfd do begin
nSize := sizeof(pfd);
nVersion := 1;
dwFlags := PFD_DRAW_TO_WINDOW or PFD_SUPPORT_OPENGL or PFD_DOUBLEBUFFER;
iPixelType:= PFD_TYPE_RGBA;
cColorBits:= 24;
cDepthBits:= 32;
iLayerType:= PFD_MAIN_PLANE;
end;
nPixelFormat:=ChoosePixelFormat(hdc,@pfd);
if nPixelFormat=0 then exit;
SetPixelFormat (hdc,nPixelFormat,@pfd);
SetDCPixelFormat:=true;
End;
...
function Draw_Scene(dc:hdc):boolean;
begin
Draw_Scene:=false;
glClear(GL_COLOR_BUFFER_BIT+GL_DEPTH_BUFFER_BIT);
glPushMatrix;
Draw_Plan; // отрисовка карты
glPopMatrix;
glFinish; // не обязательно
SwapBuffers(DC);
Draw_Scene:=true;
end;
Сколько машин видел - везде работает двойной буфер, даже где самых плохие видеокарты.
Может на четверкая и тройках так?
А работать лучше с нуля - понимать больше будешь...


 
NetBreaker666 ©   (2001-12-25 16:14) [3]

OpenGL для того и сделан, что если что-то не поддерживается видяхой, то будет выполнено програмно.
Если программа запущенна в оконном режиме, то в большинстве случаев Double Buffer реализуется программно.



Страницы: 1 вся ветка

Текущий архив: 2002.02.25;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.01 c
1-79352
metrA
2002-02-07 14:00
2002.02.25
DBGrid зафиксировать колонку


3-79250
Максимка
2002-01-29 18:55
2002.02.25
Как в поле таблицы Oracle типа NUMBER записать NULL ?


14-79456
StelZ
2002-01-04 20:47
2002.02.25
Help ака справка


1-79400
copyr25
2002-02-09 15:43
2002.02.25
Чем руководствуются FindFirst и FindNext?


1-79324
vinni2000
2002-02-07 10:15
2002.02.25
Есть вопрос!!!