Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> у BitBlt заметена scanline. Где раздобыть, быструю функцию не переделывая всё? 
:(
    Опции темы
MoZy
  Дата 23.2.2007, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 4.6.2006

Репутация: 1
Всего: 0



Я пишу игру на GDI. Возможно ли внедрить какие-то другие библиотеки, функции сильно не перестраивая проект? Не хочется переходить на DirectDraw. Проблема только в скорости вывода бэк буфера на экран. Оч некрасиво смотрица, когда идут какие-то полосы или даже волны. Или может нужно что-то приделать, чтоб все робило??
--------------------
Experimentia est optima rerum magistra
PM MAIL WWW ICQ   Вверх
Earnest
Дата 24.2.2007, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 33
Всего: 183



Кто же его знает, чего ты там напрограммировал и чем буфер на экран выводишь... Может, по точкам?
К быстроте BitBlt пока претензий не было.
Полосы и волны могут быть визуальным эффектом, если например сначала стирать, потом копировать или что-то в этом роде.


--------------------
...
PM   Вверх
MoZy
Дата 24.2.2007, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 4.6.2006

Репутация: 1
Всего: 0



Earnest, кто кто.. я знаю. Каждая новая картинка выводится поверх старой. Одна большая. Кстати, даже в паинте, когда скролл двигаешь (скриншот например и еще под лупой), то теже волны идут, что и у меня.

Для наглядности закрась половину черным и половину белым (левую и правую). Потом горизонтально скролом подвигая. Там вообще ступеньки будут. А паинт точно на GDI сделан

Это сообщение отредактировал(а) MoZy - 24.2.2007, 19:21
--------------------
Experimentia est optima rerum magistra
PM MAIL WWW ICQ   Вверх
Earnest
Дата 25.2.2007, 08:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 33
Всего: 183



Тоже мне, нашел что в пример приводить - Paint! smile Да он на коленках каким-то студентом-практикантом написан, скорее всего.
Скролл можно по разному реализовать. И работу с растрами тоже. Если растр большой - в десятки раз больше экрана, то чего удивляться - это уже издержки работы с памятью - в стандартном битмапе она по строкам. В этом случае его неплохо кэшировать - например, порезать на квадраты.
Цитата(MoZy @  24.2.2007,  20:18 Найти цитируемый пост)
Для наглядности закрась половину черным и половину белым (левую и правую). Потом горизонтально скролом подвигая

У меня так не будет... Ты забыл написать, что скролл у тебя полной перерисовкой реализуется. 
Для быстрого скрола используй ScrollDC или ScrollWindow, и перерисовывай только невалидные кусочки. И проследи, чтобы окно никто не стирал.

Поверь, вывод растра можно организовать очень быстро! И без всяких мельканий. Вот с большим вектором могут быть задержки...



--------------------
...
PM   Вверх
MoZy
Дата 5.3.2007, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 4.6.2006

Репутация: 1
Всего: 0



Earnest, ты конечно же все поняла. Я написал игру, карта которой располагается на большом 48битном дибе в десять раз превосходящем размеры экрана. И чтобы двигаться по карте я открываю Paint через Калькулятор и начинаю перерисовку всей битмапы с помощью AlphaBlt в три захода и тут же делаю UpdateWindow, чтобы не так сильно на WM_SCROLL'е все мигало.
А после всего этого я запускаю командную строку с параметром CLS и REBOOT, чтобы уж наверняка экран очистился.

А вот о квадратиках я совсем забыл. Теперь вместо одной линии я буду видеть несколько! это же так здорово и не будет бросаться в глаза. Юзер подумает, что это часть ландшафта и конечно же влюбится в мою игру!
--------------------
Experimentia est optima rerum magistra
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0443 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.