ivagor, вот я тоже не смог понять, где именно их надо видеть 1024. Может быть, если бы это была картинка во всю ширину, было бы понятней. Типа черезстрочность, но по вертикали. А тут два одинаковых слайда слева и справа, в чем смысл не ясно.
ivagor, вот я тоже не смог понять, где именно их надо видеть 1024. Может быть, если бы это была картинка во всю ширину, было бы понятней. Типа черезстрочность, но по вертикали. А тут два одинаковых слайда слева и справа, в чем смысл не ясно.
Больше игр нет
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Откопал стюардессу
1. Расчет вращения ускорен практически в два раза. При большИх размерах фигур бОльшую часть времени занимают остальные операции, поэтому ускорение будет более заметно при меньших размерах фигур. При больших размерах фигур ускорение можно заметить при вращении по всем трем осям.
2. Убрал лишнюю задержку, связанную с кадровой синхронизацией (синхронизация осталась, убрал именно лишнюю задержку), вместе с эффектом от предыдущего пункта ускорение видно невооруженным взглядом.
3. Увеличена точность расчета при отсечении невидимых граней. Это позволило уменьшить минимальный размер фигур без погрешностей в отсечении.
4. В связи с добавлением эмуляции вектора в Emu80 убрал один из вариантов коррекции сторон (4:3) и оставил только 5:4 (по умолчанию) и 1:1 (без коррекции). Клавиши переключения соответственно изменились. Убрал из архива конфиг для emu c 5:4.
Я нарочито игнорирую новые спасибки, но в этом случае не могу промолчать и выражаю свой восторг от новой версии. Вот кстати она в картотеке, кому лень запускать эмулятор руками: [906]
Больше игр нет
ivagor, я присоединяюсь с бестами и регардами: это хорошо!
svofski, PPC, спасибо!
Немного цифр по скорости вариантов 17 и 20. Для простоты взял исходную фигуру (куб) исходного (максимального) размера.
Вращение по одной оси
17:12.5 FPS; 20:16.67 FPS
Вращение по двум осям
17:10-12.5 FPS; 20:16.67 FPS
Вращение по трем осям
17:10 FPS; 20:12.5-16.67 FPS
Можно свести простой процессора на кадровую синхронизацию к минимуму перейдя к тройной буферизации и еще немного поднять FPS, по крайней мере в "сложных" пограничных случаях.
Слов нет. Круто.
KTSerg, спасибо на добром слове, но на "круто" все же не тянет, скорее "нормально".
Что потенциально можно улучшить:
1. Расчет вращения. Самая долгая операция - умножение, в 20 оптимизирована по максимуму, вычисляется по таблице. Но вокруг код рыхлый, можно его уплотнить. С другой стороны сейчас зато понятно, я вот через год смог вспомнить-разбраться.
2. Проекция. Деление реализовано самой быстрой известной процедурой, без таблиц (которые без залезания в кваз уже негде хранить) не ускорить.
3. Отсечение невидимых граней. Умножение можно ускорить.
4. Стирание и рисование - уже некуда ускорять. Стирание стеком, рисование самой быстрой известной процедурой.
Резервы есть в вышупомянутой тройной буферизации, оптимизации неглавного умножения и деления, и в целом можно пробежаться по коду и везде подоптимизировать. Но 25 FPS при максимальном размере кубика вряд ли будет. Железного минимума 16.67 FPS вполне реально достичь.
Оказалось, что можно еще сократить задержку ожидания кадровой синхронизации без перехода к тройной буферизации.
При вращении исходного кубика по трем осям с максимальной скоростью
средний FPS в 20: 14.8
средний FPS в 21: 16.4
electroscat (24.09.2019), Improver (20.08.2019), svofski (19.08.2019)
Доброго времени! Прошу прощения за беспокойство, я только разбираюсь в программах на асемблере, и сейчас пытаюсь разобраться с графикой. Очеь интересно, в ваших исходниках лежит файл baboon.pic - я пытался открыть его разными редакторами и программами, просматривал его в hex редакторе, и ничего не нашел, что говорило бы о его параметрах и о том, что это вообще такое. Понимаю, что это код картинки, но как он получается, подскажите пожалуйста, хотя бы намекните, от куда получается этот дамп?
И еще одна вещь меня интересует, может не совсем в тему, но интересно...
Как на асемблере обратиться к текстовому файлу, находящемуся на дискете или жестком диске, с определенным именем, прочитать определенное количество строк из него ? всего этого нет в руководстве по ассемблеру вроде, векторовскому.. Помогите пожалуйста разобраться, или по крайней мере скажите, где можно информацию поискать ?
И еще вопрос, в батнике у вас опция -b компилятора используется, а в tasm 3.0.1 такой опции нет.. Подскажите каким компилятором вы пользуетесь ? Прошу еще раз меня простить за такое количество вопросов... Очень хочется освоить асю.. Но пока только Pretty 8080 Assembler могу считать более менее понятным )))))) Спасибо огромное автору !!!
Заранее очень благодарен !!!
Последний раз редактировалось electroscat; 24.09.2019 в 15:00.
svofski (24.09.2019)
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)