Важная информация

User Tag List

Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 13

Тема: Передача координат спрайта для вывода?

  1. #1
    Master Аватар для Keeper
    Регистрация
    15.11.2007
    Адрес
    Харьков
    Сообщений
    873
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Question Передача координат спрайта для вывода?

    Предистория:

    Есть движок какой-нибудь игры, движку игры необходимо вывести спрайт, только вот спрайт залазит влево и вверх за пределы экрана...

    Вопрос:

    В каком виде движок игры передаст координаты спрайта в процедуру вывода спрайта на экран? Клиппинг выполняет процедура вывода.

    Зачем задаю этот вопрос: Нужен ли спеку графический ускоритель?

    Проект потихоньку развивается и по-этому спрашиваю: как вам, программистам, удобней передавать координаты спрайтов которые вылазят за пределы экрана влево и вверх? Клиппинг естественно будет аппаратный...

    Я додумался только до двух вариантов:

    1. Отрицательные координаты, например х = -4, у = -2, соответственно спрайт залазит на 4 пикселя влево и на 2 вверх.

    2. Смещение точки с координатами 0,0 (для спрайта!!!)

    Например, если разбирать случай из варианта 1:

    Передаем координаты спрайта для вывода: х = 0, у = 0;
    Передаем смещение точки с координатами 0,0 (для спрайта!!!) dx = 4, dy = 2, т.е. считаем что левый верхний угол спрайта имеет координаты 4,2.

    Для меня второй способ кажется более предпочтительным т.к. координаты спрайта можно задавать двумя байтами, если же спрайт вылазит влево и\или вверх тогда передаем один или два дополнительных байта со смещением точки 0,0

    Жду ваших мнений. Спасибо.
    Изображения Изображения  
    Последний раз редактировалось Keeper; 28.09.2008 в 00:53.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Veteran Аватар для TomCaT
    Регистрация
    25.06.2005
    Адрес
    Одесса
    Сообщений
    1,794
    Спасибо Благодарностей отдано 
    54
    Спасибо Благодарностей получено 
    46
    Поблагодарили
    22 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    отрицательные координаты чаще всего, при этом часто не имеет принципиального значения точность задания координат до пиксела. Координата тогда задает смещение от 0-ой точки (например, слева вверху) в четверть-знакоместах (с точностью до 2х пикселов) или даже в полузнакоместах. Code Masters вроде бы делали так и в Super Robin Hood, и в Dizzy. Тогда однобайтового знакового числа вполне достаточно, а если 0 при этом глобально сместить ближе к центру экрана, то можно будет задавать частичный или полный уход спрайта за любые края
    Помни. Только на компьютере можно семь раз Cut, а один - Format. В реале все иначе. (c)
    Власть людей сильнее, чем люди у власти.
    Чем меньше мы смотрим на мир, тем больше задумываемся о нем. (c)

    Скрытый текст

    Can you help Robin in his quest for the silver arrow? (c) Odin "Robin of the Wood"
    Мы все немного режем по дереву, а потом собираем корабли в бутылках.
    Is it the same old story you are going to tell me
    or is it the old story telling me and you we are the same?
    http://www.sky.od.ua/~ptsk
    [свернуть]


  4. #3
    Veteran Аватар для GriV
    Регистрация
    18.02.2005
    Адрес
    Набережные Челны
    Сообщений
    1,574
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    байт? 1 байт? координата?
    а почему не двухбайтовое знаковое?
    Биты рулят лучше байтов, байты рулят шустрее!
    View, Звук, Цвет

  5. #4
    Member Аватар для Serdjuk
    Регистрация
    07.09.2008
    Адрес
    г. Новокузнецк, Кемеровская обл.
    Сообщений
    61
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    20
    Поблагодарили
    6 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Keeper Посмотреть сообщение
    Зачем задаю этот вопрос: Нужен ли спеку графический ускоритель?
    Вот это вот вообще к чему???
    тоесть я понимаю если бы спекки имелы бы в настоящие врема популярность "ибиэма",то да,это было-бы необходимо....
    Я тут просто поспрашал .... где спек взять? А мне в ответ ... да на он тебе нужен,есть же эмуль!!!
    А мне вот эмуль как раз на ненужен... Мне бы спека....
    (причем это говорил человек,который музу на спекки пишет (в эмуле))
    Ище я понял что щас спекки трудно достать.... вот собственно и возник вопрос нахрена ??(извиняюсь)
    Что бы делать графические ускорители,надо сначало возобновить количество спеков 1982-2000гг. и соответственно столько же юзеров!!!

    Добавлено через 1 минуту
    пустая трата времени.... хотя возможно хобби....
    Последний раз редактировалось Serdjuk; 28.09.2008 в 18:33. Причина: Добавлено сообщение

  6. #5
    Master Аватар для Keeper
    Регистрация
    15.11.2007
    Адрес
    Харьков
    Сообщений
    873
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от TomCaT Посмотреть сообщение
    Координата тогда задает смещение от 0-ой точки (например, слева вверху) в четверть-знакоместах (с точностью до 2х пикселов) или даже в полузнакоместах
    Я же говорю про аппаратный движок, так что координаты можно будет задавать с точностью до пикселя

    Цитата Сообщение от GriV Посмотреть сообщение
    байт? 1 байт? координата?
    а почему не двухбайтовое знаковое?
    Я по-думаю, возможно что это и не критично два байта передавать или четыре...
    Я исходил из того что ускориель будет поддерживать два видео режима
    256х192 native и 256x192 16c тогда вывод спрайта выглядел бы так:

    1. Выводим в порт id спрайта, при этом происходит сброс dx и dy (см. первый пост) в ноль

    2. Выводим в порт координаты вывода спрайта, два байта (беззнаковые)

    2.1 Если спрайт вылазит влево и/или вверх то выводим еще один или два байта dx и dy

    3. Выводим в порт команду Blt в которой указывается операция наложения ( OR, AND, XOR, Copy )

    Итого от 4 до 6 байтов на спрайт

    Цитата Сообщение от vitoz80/svs/rgb Посмотреть сообщение
    Вот это вот вообще к чему???
    Прошу эту тему не засирать! Все эмоции сюда: Нужен ли спеку графический ускоритель?

  7. #6
    Veteran Аватар для TomCaT
    Регистрация
    25.06.2005
    Адрес
    Одесса
    Сообщений
    1,794
    Спасибо Благодарностей отдано 
    54
    Спасибо Благодарностей получено 
    46
    Поблагодарили
    22 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    аппаратный движок - в разделе программирование o_O
    ...
    извиняюсь, плохо читал первый пост, я действительно не по теме постил.
    Я не могу и не хочу, расписываться за всех за нас, программистов, но мне, программисту, удобнее передавать поменьше байт (тем быстрее, проще, и меньше места на регистрах). Но если движок аппаратный на все случаи, тогда, конечно, приходится передавать минимум 9 бит для каждой координаты вместо удобных 8. 2 лишних бита(знаки) можно передавать одним байтом для быстроты передачи, но это страшно неудобно.
    А что, если поддержать кроме 4-байтовой системы координат и упомянутый мною выше режим непопиксельной точности? Или это будет огромный ненужный гемор?
    Помни. Только на компьютере можно семь раз Cut, а один - Format. В реале все иначе. (c)
    Власть людей сильнее, чем люди у власти.
    Чем меньше мы смотрим на мир, тем больше задумываемся о нем. (c)

    Скрытый текст

    Can you help Robin in his quest for the silver arrow? (c) Odin "Robin of the Wood"
    Мы все немного режем по дереву, а потом собираем корабли в бутылках.
    Is it the same old story you are going to tell me
    or is it the old story telling me and you we are the same?
    http://www.sky.od.ua/~ptsk
    [свернуть]


  8. #7
    Master Аватар для Keeper
    Регистрация
    15.11.2007
    Адрес
    Харьков
    Сообщений
    873
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от TomCaT Посмотреть сообщение
    аппаратный движок - в разделе программирование o_O
    Именно тут, я ведь спрашиваю как вам, программистам, удобней передать координаты

    Цитата Сообщение от TomCaT Посмотреть сообщение
    А что, если поддержать кроме 4-байтовой системы координат и упомянутый мною выше режим непопиксельной точности? Или это будет огромный ненужный гемор?
    А можно какой нибудь абстрактный пример, хотя бы в псевдо-коде?

  9. #8
    Veteran Аватар для TomCaT
    Регистрация
    25.06.2005
    Адрес
    Одесса
    Сообщений
    1,794
    Спасибо Благодарностей отдано 
    54
    Спасибо Благодарностей получено 
    46
    Поблагодарили
    22 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ну, экран тогда можно разбить так, по горизонтали например
    Экран (знакоместо-пиксел):0-0, 0-2, 0-4, 0-6, 1-0, 1-2, ... 31-4
    Координата: 0, 1, 2, 3, 4, 5, 6, 7... 126, 127

    Как видно, координата для 31-6 отсутствует - в доп. коде нет 128. Поэтому центр, точку (0;0) уже приходится смещать хоть на 1 пиксел... или пользоваться отриц координатами, 0, -1, -2, -3 в чем, собственно, ничего страшного нет, страшно непривычно только.
    А если точку с к-тами (0;0) положить, ну, где-нибудь в левый верхний угол знакоместа 8,8 : (8-0; 8-0), тогда часть экрана слева и сверху имеет одну или обе отриц. к-ты, часть - положительные, и при этом немалый кусок заэкранной области со всех краев тоже "размечен" координатами. Тогда у программиста сложности только с привычкой к тому, что 0,0 в углу, а еще с незначительными усложнениями алгоритмов проверки выхода за экран, т.к. они по большей части соптимизированы на проверку переноса и равенства нулю.
    Последний раз редактировалось TomCaT; 29.09.2008 в 09:21. Причина: пара ошибок
    Помни. Только на компьютере можно семь раз Cut, а один - Format. В реале все иначе. (c)
    Власть людей сильнее, чем люди у власти.
    Чем меньше мы смотрим на мир, тем больше задумываемся о нем. (c)

    Скрытый текст

    Can you help Robin in his quest for the silver arrow? (c) Odin "Robin of the Wood"
    Мы все немного режем по дереву, а потом собираем корабли в бутылках.
    Is it the same old story you are going to tell me
    or is it the old story telling me and you we are the same?
    http://www.sky.od.ua/~ptsk
    [свернуть]


  10. #9
    Master Аватар для Keeper
    Регистрация
    15.11.2007
    Адрес
    Харьков
    Сообщений
    873
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ужос А в чем выгода от использования такого метода?

  11. #10
    Veteran
    Регистрация
    06.05.2006
    Адрес
    Ливны, Орловская обл
    Сообщений
    1,169
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Мне кажется просто нужно увеличить размер виртуального экрана до width+spr_max_width*2 и с высотой также. И аппаратно резать нужный кусок в центре.

Страница 1 из 2 12 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Обрезание спрайта на краю экрана.
    от moroz1999 в разделе Программирование
    Ответов: 29
    Последнее: 18.02.2009, 16:20
  2. Ответов: 20
    Последнее: 20.12.2007, 20:01
  3. Композит проблемы вывода на экран.
    от Mikka_A в разделе Ленинград
    Ответов: 5
    Последнее: 24.12.2006, 19:16
  4. Передача параметров хитрой железке
    от ZEK в разделе Программирование
    Ответов: 22
    Последнее: 14.07.2006, 16:34

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •