Текущий архив: 2005.10.02;
Скачать: CL | DM;
Вниз
[Delphi, GLScene] Оптимизация... Найти похожие ветки
← →
Архитектор (2005-05-26 10:25) [0]Я создаю нечто наподобие GLScene "Earth" demo и как бы я ни бился в этой демке количество FPS в 3-4 раза больше чем у меня... хотя мой проект намного проще... обьясните что можно настроить чтобы повысить FPS, а лучше может у кого есть исходник этой демки...
-----------------------------------------------------------------------
Для имитации солнца использую GLLensFlare.
Звезды создаю с помощью SkyBox"а.
причем если удалить скайбокс, то если солнце не попадает в кадр количество ФПС приемлемое, а если со скайбоксом то без разници попадает солнце или нет, ФПС практически одинаковый...
-----------------------------------------------------------------------
GLScene "Earth" demo взять можно тут:
https://sourceforge.net/project/showfiles.php?group_id=29749
← →
DeadMeat © (2005-05-26 10:31) [1]Если я правильно понимаю, то исходник демки идет в комплекте.
Это раз.
Второе.
Фраза "хотя мой проект намного проще" практически ни о чем не говорит.
И третье.
Попробуй откомпилировать демку Earth в своей делфе и после этого уже сравнивай. И запускай не из под среды, а прямо как есть.
← →
DeadMeat © (2005-05-26 10:34) [2]http://delphimaster.net/view/9-1112703539/
Тут тоже чего то..
И еще гдето было по форуму.. Поищи.
← →
Архитектор (2005-05-26 10:52) [3]2 DeadMeat... исходника в комплекте нет... ResDataPack это вего лишь набор более качественных текстур.
:)) Враза * мой прект намного проще * в моем понимании - это, на форму кинул GlSceneViewer, GlScene, создал пару шариков, натянул на них текстуры и в каденсере ( его я тоже кинул на форму :)) прописал вращение по простенькой формуле (через косинус, синус).
← →
Архитектор (2005-05-26 10:53) [4]:) млин очепятка... Фраза..
← →
DeadMeat © (2005-05-26 13:22) [5]http://www.deadmeat.programist.ru/AdvDemos.rar
Конечно все зависит от того, откуда ты обновлял..
А банальный такой вопрос..
Текстуры какого размера?
← →
Архитектор (2005-05-26 14:23) [6]2 DeadMeat текстуры:
>на земле и луне 1024х512;
>на скайбоксе 512х512 (одна для всех сторон)
← →
VVV-First (2005-05-26 14:59) [7]на скайбоксе 512х512 (одна для всех сторон)
чего-то я не понял , а на него-то текстуру зачем, там и так можно прекрасно звезды нарисовать, или ты там целые галактики рисуешь , с туманностями?
Да и в демке Earth есть файл с каталогом звезд, загружаешь его и все
← →
Архитектор (2005-05-26 15:13) [8]2 VVV-First
>>там и так можно прекрасно звезды нарисовать...
с этого места поподробней можно?? КАК?? (я с GlScene тока начал работать)
← →
VVV-First (2005-05-26 15:59) [9]GLSkyDome.Stars.LoadStarsFile();
вот так:)))
ну только , путь к файлу написать надо
формат файла я не сотрел . ну тоеть лубой файл туда не подсунешь,
ну там в исходнике точно валялся
а мен вообще-то тоже интересно , все что с космосом,
у тебя есть может какие примерчики новенькие
← →
VVV-First (2005-05-26 16:04) [10]там , что еще прикольно у GLSkyDom позволяет , рисовать звезды любой звездной величины, я когда пытался сделать это сам в OpenGl
то такой градации так и не сделал :)))
а тут просто зашибись все:)
← →
Архитектор (2005-05-26 16:52) [11]2 VVV-First
Спасибо бальшое со скайдомом работает побыстрее :) загрузил в него файл из Earth demo... настроить только надо а то иногда землю звезды закрывают :(
>>у тебя есть может какие примерчики новенькие...
нет примеров новых нет... я этой темой заинтересовался недавно :) как диплом дали (смоделировать Движение луны вокруг земли, затмения и Фазы... сроки поджимают а у меня ничего не готово, :)) как обычно спохватился поздно)
если у тебя есть какие примеры, особенно по моделированию движения спутников (Луны в частности) я бы не отказался поюзать :)
← →
VVV-First (2005-05-26 17:23) [12]ооооо, так мы стобой коллеги,
я тоже чере неделю защищаю диплом
"Движение искуственного спутника Земли С учетом возмущений от Солнца, Луны и больших планет"
я для себя интереса ради сделал то , что ты хочешь сделать
у меня летает Луна, Земля, Солнце, Спутники (даже мкс есть:))
показываются орбиты спутников.
Если интересно , то Луну считал по теории Хилла-Брауна точность до 1 угловой секунды, планеты, с точность до полутора их радиусов (плоховато конечно, но в чем дело понял уже слишком поздно , не стал переделывать), спутники интегрирую методом Рунге-Кутта
вот это в кратце
поэтому спрашивай если что, чем смогу...
настроить только надо а то иногда землю звезды закрывают :(
рисуй сначала его, а потом Землю и все остальное
← →
Архитектор (2005-05-26 17:34) [13]2 VVV-First
>>теория Хилла-Брауна ... я про нее вообще ничего не знаю... седня что то в инете было но только то что она существует... я в астрономии полный ноль, нет даже школьного курса, если можеш приведи алгоритм рассчета орбиты луны и приведи ссылку на документацию по этой теории :) а то я думал все по Кеплеру делать, она вроде подходит (хоть и с натяжкой) к движению луны :)
>>настроить только надо а то иногда землю звезды закрывают :(
>>рисуй сначала его, а потом Землю и все остальное
что значит рисуй сначала ее а потом остальное, я СкайДом на форму кинул, в обработчике создания формы загружаю файл со звездами и все, больше с ним не работаю. если вертеть камеру то временами звезды выходят на передний план :(
← →
VVV-First (2005-05-26 17:59) [14]
а то я думал все по Кеплеру делать, она вроде подходит (хоть и с натяжкой) к движению луны :)
не в обиду тебе сказанно, но ни кому больше такого не говори.
Если ты хочешь , хоть с какой-то точность находить кординаты Луны, то только при помоши лунный теорий (она не одна и их дохрена), кеплер только для задачи двух тел, и то тела пологаются как материальные точки, а нахождение положения Луны это зада N тел.
что значит рисуй сначала ее а потом остальное
у тебя ж на форме лежит компонент GlScene? так вот, в его списке сначало должен стоять СкайДом, а после все сферы. Ну а если создаешь динамически , то сначало СкайДом и потом сферы, вроде так, ну вовсяком случаи я так делал.
я в астрономии полный ноль, нет даже школьного курса, а как же ты собрался моделировать затмения???
если можеш приведи алгоритм рассчета орбиты луны завтра смогу принести маленькую программу, которая может это делать, только точность у нее определения положения Луны 10 угловых секунд, та что я использовал , уж слишком громоздка.
да ну ты тохда, должен хотя бы знать , что такое Юлеанская дата, Широта Долгота. Паралакс, (я думаю с нетом под рукой это не проблема)
← →
XProger © (2005-05-26 18:51) [15]Так... Хочешь много FPS - делай руками!
Выбрав GLScene ты променял скорость на простоту разработки...
Если хочешь добиться FPS больше чем в той демке:
1) Если ты используешь скайбоксы, то отпадает необходимость в очистке буфера цвета (кадра)
2) Не подавай в видеокарту не видимую геометрию
3) Буфер глубины и буфер цвета по 16 бит хватит поуши (для такого проекта)
4) Старайся избегать использования блендинга, для дырок и альфа тест сойдёт
5) Фуллскрин
6) Выруби вертикальную синхронизацию
7) Не используй таймеры! Делай всё "мёртвым" циклом. Без всяких VCL...
8) Не используй GLScene!!!
← →
DeadMeat © (2005-05-26 20:27) [16]Да ты прям антиглсценовскую кампанию тут разводишь по форуму...
;))
---
...Death Is Only The Begining...
← →
XProger © (2005-05-26 20:45) [17]Ну не совсем...
Но пора привыкать к порядку ;)
← →
Архитектор (2005-05-27 10:00) [18]2 XProger
>>1) Если ты используешь скайбоксы, то отпадает необходимость в очистке буфера цвета (кадра)
Я как понимаю это значит : GlSceneViwer.Buffer.ContextOptions -> roNoColorBufferClear := true...
Так вот при такой установке наблюдаю потрясающую картину, пошаговую прорисовку сцены :) а ФПС падает так что прорисовку GlLensFlare можно наблюдать секунды 2 :)
2 VVV-First
>>а то я думал все по Кеплеру делать, она вроде подходит (хоть и с натяжкой) к движению луны :)
>>не в обиду тебе сказанно, но ни кому больше такого не говори.
Будеш смеяться я к нашей астрономичке подходил, так ее кеплер вполне устроил, а про лунные теории она точно ничего не знает :)
>>только точность у нее определения положения Луны 10 угловых секунд
я думаю про точность моего постраения вообще лучше молчать :)
← →
Архитектор (2005-05-27 10:16) [19]2 VVV-First
>>у тебя ж на форме лежит компонент GlScene? так вот, в его списке сначало должен стоять СкайДом, а после все сферы
так и сделал, косяк не пропал, я тут выставлял СкайДому позишн в -1000 по всем осям и выяснил что это шарик с кучей точек, так вот этот шарик не такой и большой, и земля временами выходит за его пределы (я так думаю:), если ему Scale менять то он вообще не прорисовывается... :(
??? и еще вопрос, какие размеры сцене давать ведь радиус Луны относится к расстоянию до солнца как 1 : 84580 (минимум)
???как мне солнце замутить??
← →
cyborg © (2005-05-27 10:48) [20]перед рендерингом фона нужно отключать Z буфер
← →
XProger © (2005-05-27 11:36) [21]Архитектор, и рисовать скайдом в позиции камеры! Радиус в таком случае абсолютно не важен :)
← →
Архитектор (2005-05-27 12:56) [22]2 cyborg
>> перед рендерингом фона нужно отключать Z буфер
как?
← →
VVV-First (2005-05-27 14:38) [23]
??? и еще вопрос, какие размеры сцене давать ведь радиус Луны относится к расстоянию до солнца как 1 : 84580 (минимум)
???как мне солнце замутить??
вводи масштабные коэфициенты, а Солнце и Луны с их реальными размерами и расстояниями пусть и масштабированными ты конечно нарисуешь, но всеравно придется перехоть от объекта к объекту, так как Луну с растояния Солнца, ты хрен увидишь.
Я делал так же с Марсом, приходилось , делать сто-то на подобии межпланетного перелета
Будеш смеяться я к нашей астрономичке подходил, так ее кеплер вполне устроил, а про лунные теории она точно ничего не знает :)
Блин так так бы и сказал , что тебе надо решить задачу 2 тел
Я тебе уже Хилла-Брауна принес
← →
XProger © (2005-05-27 14:48) [24]Архитектор, ну в GLScene же все прощё... ;)
А у нас это пишется вот так: glDisable(GL_DEPTH_TEST);
← →
Архитектор (2005-05-27 14:49) [25]2 VVV-First
>>Я тебе уже Хилла-Брауна принес...
ничего мне и Теория Хилла-Брауна пригодится :) если не в диплом так для себя :)
← →
Архитектор (2005-05-27 14:52) [26]2 VVV-First
>>так как Луну с растояния Солнца, ты хрен увидишь.
Да но Солнце с луны видать :( но ведь не рисовать же его на расстояние 85000 единиц от луны??
← →
Архитектор (2005-05-27 14:53) [27]XProger ©
Как это пишется у ВАС я знаю... мне НАДО в GlScene ;)
← →
XProger © (2005-05-27 15:05) [28]Архитектор, пока ты не поймёшь что на низком уровне всё проще - будешь задавать глупости...
← →
VVV-First (2005-05-27 15:09) [29]на расстояние 85000 единиц от луны?? - что это за единицы такие:))) Минимальное расстояние ОТ Луны До Солнца (14960000-369000) км это приблизительно
Я ж тее грю масштабные коэфициенты!
← →
Архитектор (2005-05-27 15:10) [30]TheArchitect.AllWorld.XProger.Visible:=false;)
← →
Архитектор (2005-05-27 15:14) [31]2 VVV-First
85000 это и есть маштабирование... за еденицу взят радиус луны как самое малое значение которое приходится учитывать... т.е.
GlMoon.Radius:=1;
← →
VVV-First (2005-05-27 15:23) [32]аааааа, ну тохда удачно порисовать:)
← →
XProger © (2005-05-27 15:33) [33]Архитектор, есть один Space Flight Simulator - Orbiter"ом зовётся... Там хоть до Плутона лети... Скачай - посмотри, может идею подкинет. И никаких скайдомов не использовалось кстати.
P.S.
Ещё раз повторяю, пока не поздно завязывай с GLScene и переходи на OpenGL...
← →
VVV-First (2005-05-27 15:42) [34]XProger © (27.05.05 15:33) [33] да но за созданием такого приложения , сидел не один умный дядька :))
← →
Архитектор (2005-05-27 15:42) [35]2 VVV-First...
я все же хочу посмотреть твой пример :))
скинь на мыло komelgman_собака_mail.ru
← →
DeadMeat © (2005-05-27 15:46) [36]
P.S.
Ещё раз повторяю, пока не поздно завязывай с GLScene и переходи на OpenGL...
Тебе прям в рекламе надо сниматься...
← →
VVV-First (2005-05-27 15:57) [37]все отправил , но он не рисует , а только считает, да и еще я не помню в какой системе, толи в экваториальной, толи в эклиптической, но судя по Z координате , таки в экваториальной:)) (просто я код писал год назад)
но если как ты гришь , ваш препод понятия не и меет о теорих Луны, то тебе он не пригодится.
Да ты ей запусти Луну вообще в полярной системе, да ивсе:))))))))))))
← →
VVV-First (2005-05-27 16:01) [38]DeadMeat © (27.05.05 15:46) [36] и не говори
← →
Архитектор (2005-05-27 16:46) [39]2 VVV-First спасибо :) буду разбираться.... надо правдо еще саму теорию Хилла-Брауна надыбать а то непонятно что за куча констант :))
← →
VVV-First (2005-05-27 16:54) [40]Архитектор (27.05.05 16:46) [39] это коэфициенты, учитывающие различные возмущения, в полной версии это теории их более 1000:))) а эта как видишь , обрезана, выбраны самые главные
могу посоветовать классную книгу,
Н.И.Идельсон «Этюды по истории небесной механики» М.: Наука. 1975г.
М.Ф. Суботин «Введение в теоретическую астрономию»
Ф.Р. Мультон «Введение в небесную механику».
У. Смарт “Небесная механика”.
первая , тебе какраз подойтет
← →
keal (2005-05-27 17:01) [41]XProger
7) Не используй таймеры! Делай всё "мёртвым" циклом. Без всяких VCL...
без vcl понятно, и легче прога и проще...
а что значит "мёртвым" циклом?
← →
XProger © (2005-05-27 17:05) [42]ну мёртвым это условно...
while true do
begin
// обработка сообщений, обновление и отрисовка
// без всяких там GetTickCount
end;
← →
VVV-First (2005-05-27 17:10) [43]XProger © (27.05.05 17:05) [42] тогда вся эта хрень зависит от производительности машины помоему:))
И кому оно надо?
← →
keal (2005-05-27 17:11) [44]XProger
надо будет попробовать.
раньше я использовал timeSetEvent с периодом 1мс.
Архитектор
если хочешь оптимизировать, то использую opengl. готовые универсальные компоненты громосткие и как правило работают медленее.
← →
XProger © (2005-05-27 17:21) [45]VVV-First, хм это ещё почему? GetTickCount имеет шикарную погрешность порядка 18 мс :) А QueryPerformanceCounter ещё никто не отменял ;)
← →
VVV-First (2005-05-27 17:34) [46]QueryPerformanceCounter ещё никто не отменял ;) тфу, так ты так и гри:)))))))
а то я подумал ты совсем все на самотек пустил
← →
Архитектор (2005-05-28 10:34) [47]2 VVV-First
У тебя в примере расчет долшоты и широты:
Долгота: Lambda := Lh + 6.288750*sin(Mh)+...
Широта : Betta := ничего нет потом + (может Mh надо) + 5.128189*sin(F)+...
:) еще раз спасибо за пример:)
← →
VVV-First (2005-05-30 16:41) [48]Широта : Betta := ничего нет потом + (может Mh надо) + 5.128189*sin(F)+...
нет не надо
← →
Zer0 © (2005-05-31 04:46) [49]хех, картина маслом: товарисч в 3d шутере остановился чтобы поглядеть на созведзия и понять, куда дальше бежать =)
← →
VVV-First (2005-05-31 15:10) [50]Zer0 © (31.05.05 04:46) [49]
открою секрет, игры это не только шутеры
← →
Zer0 © (2005-05-31 18:40) [51][50] VVV-First
:shocked:
← →
VVV-First (2005-06-01 13:39) [52]:shocked:
ха а шо вы думали :))))))
← →
Zer0 © (2005-06-01 13:49) [53]ну а если без междустрочников:
if игра_не_требует_физической_точности_реализации_некоторых_процессов then
сделать_просто_методом_подгонки
else
pray_to_dark_lord_and_RTFM;
← →
VVV-First (2005-06-01 18:28) [54]if игра_не_требует_физической_точности_реализации_некоторых_процессов then
сделать_просто_методом_подгонки
else
pray_to_dark_lord_and_RTFM;
ну и к чему все это.........
Страницы: 1 2 вся ветка
Текущий архив: 2005.10.02;
Скачать: CL | DM;
Память: 0.61 MB
Время: 0.045 c