![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
GLScene: переключение режимов рендеринга [Delphi, Windows]
miek © (2004-08-20 00:05:00)Как менять установки рендеринга на лету? Мне нужно переключать режимы типа "high detail/low detail". Вот такая последовательность (см ниже) то работает, то падает с ошибкой Out of Memory.
glsceneviewer1.Visible:= false;
case setup.detail of
low:
begin
glcadencer1.Enabled:= false;
glscene1.BeginUpdate;
gllabel6.Caption:= 'DETAIL LEVEL: LOW';
glsceneviewer1.Enabled:= false;
glsceneviewer1.Buffer.FogEnvironment.FogDistance:= fdEyePlane;
glshadowplane1.Visible:= false;
glsceneviewer1.Buffer.ColorDepth:= cd16bits;
glsceneviewer1.Buffer.DepthPrecision:= dp16bits;
glsceneviewer1.Buffer.AntiAliasing:= aanone;
glsceneviewer1.Buffer.ContextOptions:=
glsceneviewer1.Buffer.ContextOptions+[roNoColorBufferClear];
glsceneviewer1.RecreateWnd;
glsceneviewer1.Enabled:= true;
glscene1.EndUpdate;
glcadencer1.Enabled:= true;
end;
high:
begin
glcadencer1.Enabled:= false;
glscene1.BeginUpdate;
gllabel6.Caption:= 'DETAIL LEVEL: HIGH';
glsceneviewer1.Enabled:= false;
glsceneviewer1.Buffer.FogEnvironment.FogDistance:= fdEyeRadial;
glshadowplane1.Visible:= true;
glsceneviewer1.Buffer.ColorDepth:= cd24bits;
glsceneviewer1.Buffer.DepthPrecision:= dp32bits;
glsceneviewer1.Buffer.AntiAliasing:= aadefault;
glsceneviewer1.Buffer.ContextOptions:=
glsceneviewer1.Buffer.ContextOptions-[roNoColorBufferClear];
glsceneviewer1.RecreateWnd;
glsceneviewer1.Enabled:= true;
glscene1.EndUpdate;
glcadencer1.Enabled:= true;
end;
end;
glsceneviewer1.Visible:= true;
miek (2004-08-20 22:05:00) [1]Свят-свят! Пропал глюк-то. Таймер там в самом деле стоят, только он ничего опасного не делает.
>зачем glsceneviewer1.visible менять
Ну типа контрольного выстрела, не знал за что хвататься, вот и поставил.
DeadMeat (2004-08-20 01:11:00) [2]Хз... У меня нормально работает...
Поставил это в OnProgress и посмотрел в ProcessExplorer-е на количество занимаемой памяти и всяких открытых handle-ов - держится в определенных пределах, не увеличивается и не уменьшается.
Мож у тебя в другом месте ошибка? Таймер где какой стоит, асинхронный...
Или мож на изменение AntiAliasing твой карта реагирует не стандартно? У меня та он всегда отключен...
Кстати, а зачем glsceneviewer1.visible менять? Ведь RecreateWnd вроде делает тоже самое...
---
...Death Is Only The Begining...