|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
16.12.2011, 10:19 | #11 | |
Форумчанин
Регистрация: 26.10.2009
Сообщений: 170
|
Цитата:
2. с диска ресурсы подгружаются 1 раз по первому требованию, затем хранятся в менеджере. 4. уже давно задумываюсь о переходе на HGE, но все никак не могу отвязаться от своего творения. Уж больно много времени потрачено на разработку, да и что говорить - игра-то уже написана. Просто есть понимание того, что производительность ограничена, и создать карту в несколько тысяч клеток уже невозможно, что неприятно |
|
16.12.2011, 10:23 | #12 | |
Форумчанин
Регистрация: 26.10.2009
Сообщений: 170
|
Цитата:
|
|
16.12.2011, 10:29 | #13 |
Форумчанин
Регистрация: 26.10.2009
Сообщений: 170
|
есть еще вопрос. реально ли сделать полноценный альфа-блендинг на ddaw? Так чтобы рендерился весь полный экран. Сейчас я использую ассемблерные вставки, но скорость их работы оставляет желать лучшего (
Уже несколько спрайтов (до 10) приводят к сильным затормозам, я уже молчу про фул-скрин. В идеале вообще бы хотелось использовать текстуры с переменным альфаканалом |
16.12.2011, 10:42 | #14 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,882
|
Дак выкладывай куски кода, которые отвественны за всю рисовку, поглядим, покумекаем.
Кстати, размерчик текстур неплохо бы довести до 64, и вообще кратные 2 лучше обсчитываются (хотя лично я не проверял говорю как слышал от умных людей) |
16.12.2011, 22:17 | #15 |
Форумчанин
Регистрация: 26.10.2009
Сообщений: 170
|
Код я сам не писал, а взял когда-то с какого-то сайта. Там у чувака был рабочий пример, который рендерил полноэкранную картинку при разрешении 800x600 и глубиной 16 бит с завидной скоростью. Сколько я ни старался, у меня не получилось добиться такой производительности. То ли дело в разрешении, то ли в том, что у меня картинки проклятые. В общем, решил что дело это гиблое) Выкладывать все бессмысленно, могу выложить функцию рендера пов-ти, написанную с использованием mmx. Она довольно большая, т.к. там раздельный код для разных форматов пикселя, поэтому прикреплю аттачем.
|
16.12.2011, 22:22 | #16 |
Форумчанин
Регистрация: 26.10.2009
Сообщений: 170
|
да, я тоже где-то читал, что это лучше, но руки проверить так и не дошли)
|
21.12.2011, 21:02 | #17 |
Форумчанин
Регистрация: 26.10.2009
Сообщений: 170
|
|
21.12.2011, 21:47 | #18 |
Форумчанин
Регистрация: 03.11.2011
Сообщений: 230
|
Знаю, что была пейпера от амд по поводу как написать быстрый memcpy основные моменты, на которые они обращали внимание это выравнивание, потом нужно пользоваться преффечером процессора и соблюдать локальность данных в пределах кеша проца, пользовать mmx и sse. Тут я думаю на те же моменты следует обратить внимание, что бы ускорить ф-ю.
|
22.12.2011, 08:40 | #19 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,882
|
Видимо придется взять свои слова обратно (ну что я покумекаю, другие-то может и глянут и что дельное скажут).
Кумекать над сишным кодом с кучей асм-вставок (при чем ммх) , вращающим директ-икс не моё... Слова насчет буферов и менеджеров, думаю всё равно в силе, хоть на каком ЯП и АПИ |
22.12.2011, 16:13 | #20 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
sashonk, я в свое время тоже пытался использовать DDraw, но бесполезно. Как только требуется вывод полноценных альфа-канальных текстур (а не с ключом прозрачности) вся сила блиттинга испаряется. Тоже пытался задействовать ассемблерные вставки, но причина лежит ниже. Обработку данных текстуры по рукописной процедуре на ассемблере выполняет процессор. Ему нужно взять данные из видеопамяти (у тебя) обработать и положить обратно. Как известно, такой метод слаб в скорости из-за меньшей частоты шины между CPU и видеопамятью. Оно не предназначено для такого использования, ...тут быстрее будет CPU + оперативная, но опять же, нужно результат как-то отправлять в видеопамять, и снова всплывает слабое звено. Советую бросить эту затею, если действительно нужна скорость, или если почти устраивает - переписать процедуру блиттинга на конкретную битность текстур.
Скорость копирования зависит от того кратны ли данные (в байтах) четырем. Стандартная операция копирования данных в памяти работает на обычных регистрах. Если применяется MMX или SSE, то обработку и копирование можно выполнять, соответственно, по 8 и 16 байт. Если данные не кратны этим числам, то будет тратиться время на обработку "хвоста", которая просто пропускается если условия кратности выполнены.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
directdraw не рисует... | ros.pro | Мультимедиа в Delphi | 5 | 01.06.2011 19:58 |
Проблемы с DirectDraw в VC++ | Копоть Артём | Помощь студентам | 4 | 21.05.2011 23:36 |
Помогите с directdraw | BuT@JL | Общие вопросы Delphi | 5 | 22.08.2009 18:33 |
Assembler и DirectDraw | Д'якон | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 3 | 23.10.2008 08:59 |
DirectDraw | Kostia | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 29 | 15.04.2008 22:35 |