![]() |
|
Модераторы: Rickert, Alexeis, BorisVorontsov |
![]()
|
|
| Quadruple |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 4.11.2004 Репутация: нет Всего: нет |
Знает ли кто-нить, почему если запустить свое приложение на OGL, то картинка идет слегка подергиваясь, этого практически незаметно, но всеже? Я делаю ограничение на FPS 150. Но мне выдается ~62. Дк вот, а если запустить например 3dMax или там Windows Media Player, то мне сразуже выдается ~149 FPS.
Откуда появился прирост? На экране я рисую кубик без текстур. Если сделать ограничение 1000 FPS (или сколь угодно большое ограничение), то мне всеравно выдается ~62 FPS при работе только моего приложения, запускаю еще чегонибудь, то сразу же ~999 FPS становится. И картинка двигается очччень плавно. Рисую на сообщение WM_PAINT. Vsync отключен всевремя. Как сделать чтоб фпс был всегда большой независимо от запущенных доп. приложений? |
|||
|
||||
| DENNN |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 2 Всего: 43 |
В идеале, для выживания максимальной скорости необходимо синхронизировать запись в видеобуфер с обновлением экрана.
Именно так, в частности, работает WMPlayer. Что там происходит у тебя - сказать без кода сложно. |
|||
|
||||
| Quadruple |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 4.11.2004 Репутация: нет Всего: нет |
DENNN
А как сделать синхронизацию записи в видеобуфер с обновлением экрана? Т.е. что-то наподобии Vsync? Код, ну весь код это много, вот например:
Все вроде стандартно, от сообщения WM_PAINT неотделаться. |
|||
|
||||
| DENNN |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 2 Всего: 43 |
Как сделать - дельного много не подскажу. Мне всегда хватало скорости
По коду, конечно, можно предполагать все что угодно. Вот этот кусок, в сущности, не говорит ни о чем:
Это ведь высокий уровень абстракции. Когда запущен WMP или MAX, то, мне кажется, они начинают генерить прерывание на обновление экрана именно в тот момент, когда создание экрана завершено и возможна наиболее быстрая запись в видеопамять. Короче, будет не лишнем разобраться что же у тебя за железо, каковы настройки в BIOS и т.п. Добавлено @ 16:36 P.S. 60 кадров в секунду - это приемлемо если нет задачи построения стереоизображения. |
|||
|
||||
| Quadruple |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 4.11.2004 Репутация: нет Всего: нет |
DENNN
Да вобщем действительно 60 кадров хватает заглаза, но раз, примерно, в секунду происходит практически незаметный рывок, я боюсь что на менее мощных компах этот рывок будет более заметен. А вот с WMP или MAX-ом все работает четко и гладко. Железо у меня такое: ASUS P4S8X-X; 2400 Mgh; DDR 512 MB; GeForce FX 5600 128MB;
Абстрактно. Ну маленько. Но ведь ничего необычного, все уменя пошло-поехало от уроков nehe и gametutorials. (http://nehe.gamedev.net , http://www.gametutorials.com - раньше было бесплатно) |
|||
|
||||
| DENNN |
|
||||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 2 Всего: 43 |
Надеюсь в БИОС AGP Aperture Size выставлен в 128?
Может что-то в инициализации? Покажи как сохдаешь графический контекст, как инициализируешь GL-окно.
Здесь для порядка не мешало бы добавить glMatrixMode
Ты уверен, что масштабирование действительно нужно? Без него никак нелзя обойтись? Освещение включено? GL_NORMALIZE включен или выключен? |
||||||||
|
|||||||||
| Guest |
|
||||||
|
Unregistered |
В действительности, у меня модели (mesh) нормальных размеров и их я не ресизю. Но к моделям у меня добавляются всякие спрайты (ну там эффекты всякие, партиклы) и вот их то я уменьшаю/увеличиваю, т.к. все это изменяется с течением времени. схема отрисовки такая пока:
Счаз посмотрю. |
||||||
|
|||||||
| Quadruple |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 4.11.2004 Репутация: нет Всего: нет |
Да. |
|||
|
||||
| DENNN |
|
||||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 2 Всего: 43 |
Ту матрицу, для которой ты единичную загружаешь.
Я на память к сожалению все не помню, а если сделать не FULLSCREEN? Что будет с частотой? М.б. попробовать вообще убрать изменение настроек экрана? Вот кусок в одной из программулин где полноэкранное окно создается
Да. Чем больше плоскостей/граней/текстур в мастабированном режиме необходимо вывести, тем больше необходимо выполнить нормирования нормалей. |
||||||||
|
|||||||||
| Quadruple |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 4.11.2004 Репутация: нет Всего: нет |
DENNN
У меня в полноэкранном режиме все идет очень гладко, это в оконном режиме подергивания. Сори что сразу несказал, просто тестирую прогу в оконном режиме, так легче дебуг делать. Так что чето я немного запаниковал
Хмм... Но я не задаю нормали для вывода эффектов. |
|||
|
||||
| DENNN |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 2 Всего: 43 |
О том и речь, что не задаешь:) Нормаль приходится находить для каждого треугольника, а потом еще выполняется ее нормализация к единичной длине.
Честно сказать, у меня тоже идеи закончились НО то, что WMP пишет непосредственно в видеобуфер - это факт. В частности именно поэтому PrintScreen в нем не работает. |
||||
|
|||||
| Quadruple |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 4.11.2004 Репутация: нет Всего: нет |
DENNN
А если я буду задавать нормаль например glNormal(0,0,1)? Или это неимеет значения при использовании glScale ? Это сообщение отредактировал(а) Quadruple - 25.2.2005, 13:58 |
|||
|
||||
| DENNN |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 2 Всего: 43 |
эх......
Идем учим математику. Величина нормали используется при расчете освещенности грани. Направление нормали используется: 1) при определении видимости той или иной грани 2) при расчете свойств материала 3) возможно для отсечения, работе с различными Stencil и т.п. быферами. 4) расчете освещенности. P.S. Не путать длину нормали с ее нарпавлением. |
|||
|
||||
| Quadruple |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 4.11.2004 Репутация: нет Всего: нет |
1) Хмм... видимость я делаю не через нормали
Зачем нужна нормаль я понимаю, но мне она ненужна при выводе эффектов, потому как свет от источника ненужен, Stencil неиспользую. Я вывожу их всегда "лицом" к камере. Отсюда вопрос, если я буду ставит glNormal(0,0,1), то ничего находить и нормализовывать ненадо?
|
|||
|
||||
| DENNN |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 2 Всего: 43 |
Т.к. у тебя включен режим GL_NORMALIZE, то будет выполнена нормализация, т.е. длина нормали станет равна единице, направление останется то же. При этом не важно, что она уже равна ежинице. OpenGL- автомат с конечным числом состояний, "на лету" никакой эврестический анализ не выполняется. |
|||
|
||||
| Quadruple |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 4.11.2004 Репутация: нет Всего: нет |
Ага! Не все так плохо!
Спасибо за ответы, просветил! |
|||
|
||||
| DENNN |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 2 Всего: 43 |
Для программистов-практиков - всегда пожалуйста
|
|||
|
||||
| DENNN |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 2 Всего: 43 |
||||
|
||||
![]()
|
| Вы можете найти полезным что... | |
|
|
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |