![]() |
|
Модераторы: Rickert |
![]()
|
|
| Чупакабро |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 220 Регистрация: 27.2.2007 Репутация: 2 Всего: 4 |
Вот запустил тут Unreal Tournament в этом режиме, в разрешении 1280*1024 и 32-битным цветом. И ведь не тормозит! Вот что удивляет.
Насколько я понимаю, видеокарта тут вообще не при делах: координаты вершин, освещение считает процессор, он же занимается текстурированием и всем остальным. Вопрос у меня в основном такой: где находится задний буфер кадра - в оперативной или видеопамяти, и как туда записывются значения цвета пикселей? Если более в общем спросить, то как вообще все рисуется? (то есть как получаются экранные координаты из трехмерных, это я знаю, а вот как закрашиваются полигоны, как организован буфер кадра и z-буфер и доступ к ним, непонятно). Я просто пытался что-то подобное сделать, но фреймрейт ниже плинтуса. Когда экран просто заливаю одним цветом, то несколько сотен fps, а когда начинаю рисовать треугольники, программа начинает якорить, причем дело не в количестве полигонов, а в площади экрана, ими занимаемой. Буфер кадра у меня просто массив типа dword. --------------------
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 00459B8B in module 'Project1.exe'. Read of address 0000019C'. Process stopped. Use Step or Run to continue. |
|||
|
||||
| smalcom |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 494 Регистрация: 16.10.2004 Где: Dnepr Репутация: нет Всего: 7 |
на чем писал? -------------------- What DA F...??? |
|||
|
||||
| Чупакабро |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 220 Регистрация: 27.2.2007 Репутация: 2 Всего: 4 |
Провокационный вопрос На Delphi. Но неужели компилятор Delphi настолько убогий, что простые операции умножения и сложения не может по человечески перевести в машинные коды? Я просто считаю числа и полученные значения записываю в массив, а потом этот массив вывожу на экран с помощью функции API SetDIBitsToDevice. Или нужно использовать какие-то особые инструкции для расчетов? Это сообщение отредактировал(а) Чупакабро - 2.5.2009, 12:21 --------------------
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 00459B8B in module 'Project1.exe'. Read of address 0000019C'. Process stopped. Use Step or Run to continue. |
|||
|
||||
| Чупакабро |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 220 Регистрация: 27.2.2007 Репутация: 2 Всего: 4 |
Прошу прощения за даблпостинг, но что, никто не знает ничего по теме?
--------------------
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 00459B8B in module 'Project1.exe'. Read of address 0000019C'. Process stopped. Use Step or Run to continue. |
|||
|
||||
| arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 6 Всего: 61 |
Ключевые слова: implementing software rendering в Гугле.
значит проблема в том месте, где идут вызовы методов отрисовки. Что-то мне подсказывает, что вам надо профайлером погонять и посмотреть, где больше всего времени проводит процессор. |
|||
|
||||
| Чупакабро |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 220 Регистрация: 27.2.2007 Репутация: 2 Всего: 4 |
Я слово "профайлер" первый раз в жизни услышал)))
Скачал наобум какой-то MiniProfiler, но он выдает странные результаты:
То есть доли секунды - это я понимаю, но что значит, например 4 5504523831.546861 секунд? То ли я что-то не понимаю, то ли этот профайлер криво написан. Поэтому посоветуйте пожалуйста нормальный профайлер! Хотя, кстати, почему бы просто не использовать GetTickCount- стандартную функцию определения времени? Да, и метод отрисовки Drawtriangle я сам написал, внутри там ничего не вызывается. Я могу предположить тормоза по 2 причинам: - большое количество вычислений на 1 пиксель (расчет освещенности для каждого пикселя) - тормоза при обращении к массиву, где хранятся цвета пикселей (буферу кадра) Добавлено через 1 минуту и 34 секунды ЗЫ С Гуглом я на вы. И с английским тоже)) Иначе бы не писал на этом форуме. --------------------
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 00459B8B in module 'Project1.exe'. Read of address 0000019C'. Process stopped. Use Step or Run to continue. |
|||
|
||||
| arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 6 Всего: 61 |
Это лучше в дельфийском разделе спросить, я не в курсе.
Это врядли, обычно массив - самая быстрая штука, по крайней мере в С++ и С#. Для 3D программиста эту штуку надо юзать постоянно, для контроля за производительностью. Смысл в профайлере в данном случае в том, чтобы посмотреть наиболее часто вызываемые методы, и оптимизировать их в первую очередь. У тебя Дельфи, тут еще надо смотреть, как ты с памятью обращаешься, тоже может влиять на производительность, если много аллокаций/деаллокаций. А может и алгоритм неправильный. Добавлено через 38 секунд ЗЫ. В самообразовательных целях можно посмотреть http://www.ogre3d.org Там вроде был софтваре рендер. Тока там на С++. |
|||
|
||||
![]()
|
| Правила форума "Программирование игр, графики и искуственного интеллекта" | |
|
|
НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание что новые темы касающиеся новых вопросов создаются кнопкой "Новая тема" а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих тематических темах будут удалены а их авторы, при рецедиве, забанены.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rickert. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Программирование игр, графики и искусственного интеллекта | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |