|
|
|
|
|
Профиль : |
|
Забыл свой собственный рендер ? Трианглами или квадами не суть. Квады это абстракция OpenGL, реально все равно все будет рисоваться треугольниками.
Я конечно уже сто лет не писал под OpenGL но сразу возникает несколько вопросов-заметок.
Почему не используешь glDrawElements ?
Зачем тебе фильтрация, если игра двумерная и ты изначально можешь подобрать подходящее качество картинки ? Зачем каждый раз при отрисовке задаешь фильтрацию ? Разве это нужно ? По моему достаточно задать нужное при собственно инициализации и менять когда у тебя кто-нибудь лезет в опции, чтобы сменить качество. Но никак не делать это в процессе рендеринга.
Вызов вида: s->Draw(d->X-50*d->scale*d->mirror,d->Y-70*d->scale+d->offsetY,100*d->scale*d->mirror,100*d->scale); лично мне внушает ужас. И в плане читабельности тоже Имхо ты не помогаешь компилятору. А вдруг он не сообразит, что 100*d->scale можно просчитать один раз заранее ? Почему бы тебе не выносить такие вещи наружу и считать всего один раз ?
Если pfd - generic, то блендинг в топку.
Мне кажется очень не помешает воспользоваться профайлером.
(Отредактировано автором: 09 Марта, 2010 - 06:33:15)
----- Shine on you crazy diamond WBR jm ( aka x-ray aka ведьМЫШ ) http://vedmysh.livejournal.com |
|
Всего записей: 528 : Дата рег-ции: Март 2005 : Отправлено: 09 Марта, 2010 - 06:32:27 |
|
|
|
|
WWW : Профиль : |
|
Цитата:s->Draw(d->X-50*d->scale*d->mirror,d->Y-70*d->scale+d->offsetY,100*d->scale*d->mirror,100*d->scale); |
Так вот приходится считать каждый раз, тут никуда не денешся. Где бы я не считал. Размеры спрайтов частенько меняются (приведения во время испуга растут).
Цитата:Почему не используешь glDrawElements ? |
В голову как-то не пришло Всего 2 полигона, зачем столько возни... Но тогда уж, может, лучше GL_Lists использовать?
Фильтрация меняется каждый раз, потому что возможно изменение GraphicQuality после инициализации. А другого шанса изменить параметры в каждой текстуре может не представиться, как не во время рендеренга. Можно, в принципе, добавить флажок в каждый спрайт, изменены ли там параметры.
Да, фильтрация обязательно нужна! Эта игра поддерживает все разрешения, даже 2500 на 1500 Во время запуска я оставляю разрешение рабочего стола, как в Zuma Reverange. И тормозов это не вызовет на современных компах.
Для старых же можно опцией графики GraphicQuality: отключить блендинг, вырубить фильтрацию. При перезапуске игры, разрешение меняется к 800х600.
Тормоза при этом уменьшаются в два раза, но каждый кадр по-прежнему рисуется секунду :|
-------------------
У меня возникли мысли, из-за чего еще могут быть тормоза. Мне нужна твоя помощь в этом вопросе, как знатока OpenGL.
1. Возможно, текстуры хранятся в видеопамяти, а отрисовка ведется ЦП. Если я укажу, что хранить текстуры надо в оперативке? Никогда этого не делал, и не знаю как. Напиши, пожалуйста
2. Возможно, текстуры надо выравнить в памяти (GL_UNPACK_ALIGNMENT ?). Подскажи, что написать, чтобы заработало лучше. Я этой командой не пользовался никогда
--------------------
Софтверный рендер подождет. Если без него можно обойтись, то ждать придется ООооочень долго Я откатываю драйвера и тестирую Духи на OpenGL
(Добавление) Цитата:
... и не только из-за generic. GeForce2 за....бется рисовать с блендингом, знаю на своей шкуре. Черт, я даже не уверен, что AlphaTest не будет там тормозить |
|
Всего записей: 1694 : Дата рег-ции: Июль 2004 : Отправлено: 09 Марта, 2010 - 12:15:28 |
|
|
|
|
Профиль : |
|
Я говорю о том, что повторяющиеся расчеты в формуле можно вынести в отдельную переменную, рассчитывающуюся вначале. У тебя в этой только формуле, например, 100*d->scale считается несколько раз. Если компилятор это дело не оптимизировал, что ты кстати уже должен был проверить, то надо выносить отдельно.
Используй что угодно, но не glVertex
Про фильтрацию ещё раз - зачем это каждый раз делать в теле рендера ?
А в чем проблема ? Делай спрайты под максимальное разрешение. А потом при загрузке масштабируй И не надо фильтраций.
Боюсь, я уж точно не знаток. Как я уже говорил очень давно ничего не писал под GL, и уже лет 5 точно серьезных графических приложений не делал.
Надо читать стандарт. В Opengl текстуры в любом случае зеркалируются на сколько я помню - то бишь есть одновременно в озу и в видеопамяти. Если нужен контроль за расположением, по моему это расширение, то бишь в генерик имплементации уже не будет работать, и связанно оно кажется с супер буфферами. Я думаю, что в случае генерик имплементации текстура хранится в системной памяти - cpu до неё ближе и тебе не стоит на это заморачиваться.
Мне кажется выравнивание текстур в видеопамяти это дело самого компилятора. Что до выравнивания в озу - в интернете видел реализацию malloc/free отдающую только ailgned данные
----- Shine on you crazy diamond WBR jm ( aka x-ray aka ведьМЫШ ) http://vedmysh.livejournal.com |
|
Всего записей: 528 : Дата рег-ции: Март 2005 : Отправлено: 09 Марта, 2010 - 12:52:06 |
|
|
|
|
WWW : Профиль : |
|
Цитата:и уже лет 5 точно серьезных графических приложений не делал |
Мухи - игра уровня графики 10 летней давности, если не больше, так что 5 лет - не срок ))))
Цитата:повторяющиеся расчеты в формуле можно вынести в отдельную переменную |
Впринципе да... Неохота было делать лишнюю строчку ради всего 2 раз. Да и так ли уж сильно это влияет на быстродействие, если учесть... сколько времени уходит на непосредственную растеризацию с блендингом?
Цитата:зачем это каждый раз делать в теле рендера ? |
Ох, попробовал убрать, текстуры начали глючить неимоверно. Незнаю, в чем причина, вернул на место. Буду проверять на ошибки.
Цитата:
Походу так и сделаю. Для разрешения 800х600 можно в два раза снизить разрешение спрайтов, картинке от этого не убудет.
------------
Снес дрова, тестирую на софтвере.
GL_UNPACK_ALIGNMENT и прочие подобные настройки не прокатили.
Еще раз перелопатил Интернет. Везде пишут, что софтверной реализацией лучше вообще не пользоваться, т.к. дикие тормоза. Все-таки попробую еще денек похимичить. А потом пишу-таки свою функцию отрисовки спрайтOFF.
(Добавление) Цитата:Используй что угодно, но не glVertex |
Хорошо, перепишу под glDrawElements(), но помоему там не такие уж большие объемы данных, чтобы это значительно замедляло отрисовку. Вообще, я юзаю glDrawElements() в своей 3д двиге и довольно успешно, а вот тут взял и хренанул glVertex )))
(Добавление) А, на 'XP ) ! Все это фигня. Ради простой отрисовки спрайта использовать функционал OpenGL - маразм. Бросаю все на фиг и пишу софтварный движок для режима ухудшенного качества
(надоело сидеть без дров. ХочеЦЦа уже в игрушку какую нидь погамать нормальную ) |
|
Всего записей: 1694 : Дата рег-ции: Июль 2004 : Отправлено: 09 Марта, 2010 - 16:30:38 |
|
|
|
|
Профиль : |
|
Не важно какой уровень графики у Духов. Важно в том, что давно этим не занимался и ничего не помню
Цитата: Впринципе да... Неохота было делать лишнюю строчку ради всего 2 раз. Да и так ли уж сильно это влияет на быстродействие
|
Не факт, что это вообще влияет. Надо смотреть - я же тебе говорил. Если влияет - править. Это же ты собирался заниматься мегаоптимизациями, не я Так почему бы не оптимизировать очевидное ?
На счет glDrawElements - вполне возможно ты прав, но все равно проверь. В 3д двигах наверное вообще лучше использовать glMultiDrawElementsExt и какие нибудь супербуфферы (или как их там зовут ?)
Ты не просто перепиши. Переписывая меряй чем нибудь. И конечно сохраняй предыдущие версии. Чтобы если прироста все таки не будет - вернутся назад.
----- Shine on you crazy diamond WBR jm ( aka x-ray aka ведьМЫШ ) http://vedmysh.livejournal.com |
|
Всего записей: 528 : Дата рег-ции: Март 2005 : Отправлено: 10 Марта, 2010 - 03:02:08 |
|
|
|
|
WWW : Профиль : |
|
Будем бороться за FPS!
Сейчас больше всего меня волнуют тормоза при софтверном рисовании. Оптимизации оптимизациями, темболее что я АБТЕМИСЬД И аптемезацыи делать мне очень приятно и ентеретцно Однако )))))) Софтверный рендер делать придется однозначно, от этого никуда не уйти.
Слава вполне может настроить свой ноутбук под Мухи, но большинство офисных рабочих и просто ноутбукеров не разбираются в компе так же хорошо, как он Поэтому хардвар для избранных хардкорщиков В массы подавай софтвеер.
Я конечно слышал про Iris и про его чудо летающий софтвер. но это лишнее. Как я уже написал, надо всего лишь рисовать масштабируемые спрайты и больше ничего.
Я, конечно, не знаток технологий MMX и SSE, но свои ухищрения у меня тоже будут.
------
Начало положено. Все функции, начинающиеся на gl, убрал в "обертки" с проверкой надобности их запускать, оставил места, куда буду писАть софтверные абзацы, ввел переменную bool GraphicSoftware (! Целую пирименнуЙУю! ) . Завтра буду делать двигатель |
|
Всего записей: 1694 : Дата рег-ции: Июль 2004 : Отправлено: 10 Марта, 2010 - 03:36:56 |
|
|
|
|
|
Всего записей: 528 : Дата рег-ции: Март 2005 : Отправлено: 10 Марта, 2010 - 10:07:17 |
|
|
|
|
|
Всего записей: 1694 : Дата рег-ции: Июль 2004 : Отправлено: 10 Марта, 2010 - 15:04:29 |
|
|
|
|
|
Всего записей: 528 : Дата рег-ции: Март 2005 : Отправлено: 10 Марта, 2010 - 16:44:00 |
|
|
|
|
WWW : Профиль : |
|
Такому раздолбаю как я уже ничто не поможет Штк.
Эту статью, я припоминаю, я уже давно прочитал... Так давно, что забыл
За сегодня вспомнил-таки, как настраивается CBitmap, начал печатать функции. Да если б не дружбан, с которым мы весь день проходили Protortype, я может быть и закончил бы Ан нет.
Зато нашел глюк в программе, который я пытался поймать вот уже месяц. Это не может не радовать (глюк этот в игре незаметен, потому что функционал его использующий я выключил) |
|
Всего записей: 1694 : Дата рег-ции: Июль 2004 : Отправлено: 11 Марта, 2010 - 01:01:55 |
|
|
|
|
WWW : Профиль : |
|
P.S.: Ни строчки кода не написал, лень была несусветная, однако все досконально обдумал (куда что писать, не буква в букву, но примерно ))) ). На всякий случай включу в игру режим Direct3D из DX8, и свой обещанный софтверный режим. Возможно хренану и DirectDraw для прикола ))) OpenGL оставлю, как один из режимов (в конце концов вдруг стукнет в бошку портировать на Пингвина ). Все это добро будет выбираться из конфига Какой из режимов сделать по умалчиванию, пока думаем-с...
Кстати, jm, я вычитал кое-где, что в DirectX есть некий "хороший" софтверный рендер. Может ли быть вероятность, что он окажется лучше, чем software generic OpenGL? Проверим опытным путем )) |
|
Всего записей: 1694 : Дата рег-ции: Июль 2004 : Отправлено: 15 Марта, 2010 - 00:04:06 |
|
|
|
|
Профиль : |
|
В каком смысле хороший ? Есть референс растеризатор поддерживающий все возможности заявленные в dx. Другое дело, что работает он очень медленно Вероятность есть. Но мне например интереснее вот это: http://www.radgametools.com/pixomain.htm К сожалению в публичном доступе ее нет. Вещь, похоже, настолько хороша, что Тим Суини в UT2004 включил отдельно 'софтверный' рендер, использовавший pixomatic.
----- Shine on you crazy diamond WBR jm ( aka x-ray aka ведьМЫШ ) http://vedmysh.livejournal.com |
|
Всего записей: 528 : Дата рег-ции: Март 2005 : Отправлено: 15 Марта, 2010 - 06:04:13 |
|
|
|
|
WWW : Профиль : |
|
Интересная вещь
Цитата:Другое дело, что работает он очень медленно |
Помню, запускал на первой Voodoo HalfLife с режимом DirectX, были дикие тормоза, хотя картинка была такая же, как на 3dfx. Наверное, действительно, разницы не будет. Одна надежда - если убрать фильтрацию с текстур. Ведь софтверные двиги без фильтрации работают очень быстро. Странно, что OpenGL без фильтрации работает.... Если это вообще можно назвать работой )) Увольнять надо таких работников ))) Проверить DirectX все же будет интересно.
P.S.: Веселые Духи Benchmark )))))) |
|
Всего записей: 1694 : Дата рег-ции: Июль 2004 : Отправлено: 15 Марта, 2010 - 15:17:01 |
|
|
|
|
Профиль : |
|
Значит первый voodoo на тот момент не имел драйверов с поддержкой direct3d, только и всего.
----- Shine on you crazy diamond WBR jm ( aka x-ray aka ведьМЫШ ) http://vedmysh.livejournal.com |
|
Всего записей: 528 : Дата рег-ции: Март 2005 : Отправлено: 18 Марта, 2010 - 06:20:37 |
|
|
|
|
WWW : Профиль : |
|
Ну да, там мини-драйверы всякие... |
|
Всего записей: 1694 : Дата рег-ции: Июль 2004 : Отправлено: 18 Марта, 2010 - 17:23:59 |
|
|
|
|
|
Всего записей: 528 : Дата рег-ции: Март 2005 : Отправлено: 18 Марта, 2010 - 17:25:52 |
|
|
|
|
WWW : Профиль : |
|
Как я мог хотеть так сказать, когда я такого слова даже не знаю ))))) В халве написано мини-драйвер, вот я и поверил опять..... |
|
Всего записей: 1694 : Дата рег-ции: Июль 2004 : Отправлено: 18 Марта, 2010 - 17:35:06 |
|
|
|
|
Профиль : |
|
Эт где это там такое написано да еще и в контексте directx ?
(Отредактировано автором: 18 Марта, 2010 - 17:52:41)
----- Shine on you crazy diamond WBR jm ( aka x-ray aka ведьМЫШ ) http://vedmysh.livejournal.com |
|
Всего записей: 528 : Дата рег-ции: Март 2005 : Отправлено: 18 Марта, 2010 - 17:52:07 |
|
|
|
|
WWW : Профиль : |
|
В контексте directx нигде, только во вкладке opengl. |
|
Всего записей: 1694 : Дата рег-ции: Июль 2004 : Отправлено: 18 Марта, 2010 - 18:00:01 |
|
|
|
|
Профиль : |
|
Впроде же начали говорить о Directx Для opengl у 3dfx была библиотека (враппер если не ошибаюсь, обертка над glide) которую называли mini gl, да.
----- Shine on you crazy diamond WBR jm ( aka x-ray aka ведьМЫШ ) http://vedmysh.livejournal.com |
|
Всего записей: 528 : Дата рег-ции: Март 2005 : Отправлено: 19 Марта, 2010 - 04:21:26 |
|
|
|
|
WWW : Профиль : |
|
Ну вот. А DirectX и "полная версия" OpenGL естественно не работали. Точнее, OpenGL не работал, а DirectX работал так, как я описал. |
|
Всего записей: 1694 : Дата рег-ции: Июль 2004 : Отправлено: 19 Марта, 2010 - 06:42:24 |
|
|
|
|
Профиль : |
|
Я опять тебя не понимаю Что-то ты намешал намешал - то не работает directx, но оказывается говорил об opengl
----- Shine on you crazy diamond WBR jm ( aka x-ray aka ведьМЫШ ) http://vedmysh.livejournal.com |
|
Всего записей: 528 : Дата рег-ции: Март 2005 : Отправлено: 20 Марта, 2010 - 05:28:53 |
|
|
|
|
WWW : Профиль : |
|
Ускоритель Voodoo 2Mb + видюха S3 2Mb. DirectX работал, но в софтвере и тормозил. OpenGL "полный" не работал вообще, а OpenGL с выбранным Mini-Driver работал (не летал, конечно, а на открытых пространствах даже притормаживал, но шел вполне нормально). Software конечно же работал. |
|
Всего записей: 1694 : Дата рег-ции: Июль 2004 : Отправлено: 20 Марта, 2010 - 13:58:03 |
|
|
|
|
|
Всего записей: 528 : Дата рег-ции: Март 2005 : Отправлено: 20 Марта, 2010 - 17:28:15 |
|
|
|
|
WWW : Профиль : |
|
Как у Славы например, также тормозил, толкьо не OpenGL, а DirectX. Индивидуальности той Винды |
|
Всего записей: 1694 : Дата рег-ции: Июль 2004 : Отправлено: 21 Марта, 2010 - 17:28:25 |
|
|
|
|
|
Всего записей: 528 : Дата рег-ции: Март 2005 : Отправлено: 21 Марта, 2010 - 17:31:54 |
|
|
|
|
WWW : Профиль : |
|
Духи не тормозят. Там нечему тормозить. Тормозит OpenGL, который Духи вызывают посредствам подключаемых библиотек, и проблема в нем. Или в криво установленной ОС. Потому что у остальных все идет отлично, в том числе и у тебя. |
|
Всего записей: 1694 : Дата рег-ции: Июль 2004 : Отправлено: 21 Марта, 2010 - 19:58:55 |
|
|
|
|
Профиль : |
|
Еще раз. Судя по тестам тормозят именно Духи То, что у меня не тормозит не показатель. А ты вместо того, чтобы отрицать очевидные вещи встроил бы в Духов подробную систему логирования и логировал бы полностью процесс инициализации OpenGL, а потом этот лог запросил у Славы
(Отредактировано автором: 22 Марта, 2010 - 06:40:19)
----- Shine on you crazy diamond WBR jm ( aka x-ray aka ведьМЫШ ) http://vedmysh.livejournal.com |
|
Всего записей: 528 : Дата рег-ции: Март 2005 : Отправлено: 22 Марта, 2010 - 06:37:58 |
|
|
|
|
WWW : Профиль : |
|
Короче духи пока подождут, я вернулся к Mapedit, но это не надолго, т.к. это я умею делать быстро. |
|
Всего записей: 1694 : Дата рег-ции: Июль 2004 : Отправлено: 27 Марта, 2010 - 16:42:36 |
|
|
|
|
Профиль : |
|
эй! гоморджоба! я вернулся!
-----
|
|
Всего записей: 132 : Дата рег-ции: Апр. 2009 : Отправлено: 03 Мая, 2010 - 20:04:46 |
|
|
|