![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
OpenGL на ATI и Intel [Delphi, Windows]
@!!ex © (2005-12-05 11:33:00)С ужасом обнаружил, что все мои проекты написанные на OpenGL при просмотре на карточках от ATI и Intel мерцают.
P.S.Эффект такой же, как при отключенном заднем буффере.
Мастера, подскажите, кто знает........
Заказ горит.....
XProger (2005-12-08 09:04:00) [1]
dwFlags := PFD_DRAW_TO_WINDOW or PFD_SUPPORT_OPENGL or PFD_DOUBLEBUFFER;
@!!ex (2005-12-08 08:41:00) [2]XProger © (05.12.05 15:12) [1]
>1) Кривая инициализация
Я допускаю это, но за основы взяты примеры Хорна и Краснова.
>2) Кривые дрова
Нет.
Signate © (05.12.05 18:22) [2]
>3) кривые руки
Ну так я здесь пост и написал, чтобы мне люди с менее кривыми руками их помогли выправить.
У тебя менее кривые? поможешь?
Spec3d (05.12.05 23:40) [3]
>Да не кривые руки, а если не знаете так и скажите ну не знаем, какая карточка именно? , да и вообще ходят слухи что ATI не очень хорощо OPENGL ПОДДЕРЖИВАЕТ хотя у меня самого radeon стоит.
Пробовал штук на 15 компах. Точно сказать карточки не могу, но все на чипсете от Intel или ATI.
На любой nVidia все ок.
Fosgen (06.12.05 09:35) [4]
>Что значит - "мерцают"?
>Если это похоже на моргание всего экрана - скорее всего неверная настройка буферизации, вроде у ATi и nVidia она по разному сделана...
Очень похоже.
Не подскажешь, как правильно настроить двойную буфферизацию?
Вот код из одного из проектов(Для работы с 2Д гафикой. Основано на примере Краснова)
procedure SetDCPixelFormat (hdc : HDC);
var
pfd : TPIXELFORMATDESCRIPTOR;
nPixelFormat : Integer;
Begin
With pfd do begin
nSize := sizeof (TPIXELFORMATDESCRIPTOR);
nVersion := 1;
dwFlags := PFD_SUPPORT_OPENGL or PFD_DOUBLEBUFFER or PFD_GENERIC_ACCELERATED;
iPixelType := PFD_TYPE_RGBA;
cColorBits := 32;
cRedBits := 0;
cRedShift := 0;
cGreenBits := 0;
cGreenShift := 0;
cBlueBits := 0;
cBlueShift := 0;
cAlphaBits := 0;
cAlphaShift := 0;
cAccumBits := 0;
cAccumRedBits := 0;
cAccumGreenBits := 0;
cAccumBlueBits := 0;
cAccumAlphaBits := 0;
cDepthBits := 0;
cStencilBits := 0;
cAuxBuffers := 0;
iLayerType := PFD_MAIN_PLANE;
bReserved := 0;
dwLayerMask := 0;
dwVisibleMask := 0;
dwDamageMask := 0;
end;
nPixelFormat := ChoosePixelFormat (hdc, @pfd);
SetPixelFormat (hdc, nPixelFormat, @pfd);
End;
procedure TForm1.FormCreate(Sender: TObject);
begin
rDC:=GetDC(Form1.Handle);
SetDCPixelFormat (rDC);
hrc := wglCreateContext (rDC);
wglMakeCurrent(rDC, hrc);
glEnable(GL_TEXTURE_2D);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
end;
Fosgen (2005-12-06 09:35:00) [3]На старых картах от ATi (или на старых драйверах), были проблемы с отображением прозрачных спрайтов и билбордов через ОГЛ.
Даже сейчас при использовании Radeon 9550 если в настройках драйвера выставить МАКСИМАЛЬНУЮ производительность - выглядеть картинка будет "не очень", а точнее - поплывет отображение текстур и т.д.
Что значит - "мерцают"?
Если это похоже на моргание всего экрана - скорее всего неверная настройка буферизации, вроде у ATi и nVidia она по разному сделана...
Spec3d (2005-12-05 23:40:00) [4]Да не кривые руки, а если не знаете так и скажите ну не знаем, какая карточка именно? , да и вообще ходят слухи что ATI не очень хорощо OPENGL ПОДДЕРЖИВАЕТ хотя у меня самого radeon стоит.
Signate (2005-12-05 18:22:00) [5]3) кривые руки
XProger (2005-12-05 15:12:00) [6]1) Кривая инициализация
2) Кривые дрова