Сделал буферизацию вершин в промежуточном буфере в памяти. Получилось стрёмно, если рисовать все время разные текстуры, однако при отрисовки однотипных текстур прирост до двух раз в скорости. Пришлось подшаманить и сделать более хитрый алгоритм отрисовки. В целом прирост раза в полтора получился в скорости.
Следующий шаг - удобное масштабирование. Шкала выбрана из расчета 1 = истинный размер, 0 - нулевой, 2 - удвоеный. Тип масштаба - float.
среда, 30 декабря 2009 г.
четверг, 24 декабря 2009 г.
Реализовал загрузку из JPG файла с "интуитивной альфой". То есть на вот таком вот изображении:
будет прозрачным всё, что не черное. Цвет поддерживается только черный, чтобы не лез мусор от jpg артефактов - сделана дельта. от 1 до 765, позволяющая игнорировать близкие к черному оттенки.
Результат загрузки по этому методу выглядит вот так:
Слева вверху пример отрисовки спрайта с заданием цвета каждой вершине.
Для bmp, tga цветовой ключ, соответственно, можно будет задать любой... Возможно для jpg будет что-то вроде этого. Считаю крайне удобной фичей на стадии проектирования прототипа, когда отвлекаться на спрайты не хочется и нет времени.
будет прозрачным всё, что не черное. Цвет поддерживается только черный, чтобы не лез мусор от jpg артефактов - сделана дельта. от 1 до 765, позволяющая игнорировать близкие к черному оттенки.
Результат загрузки по этому методу выглядит вот так:
Слева вверху пример отрисовки спрайта с заданием цвета каждой вершине.
Для bmp, tga цветовой ключ, соответственно, можно будет задать любой... Возможно для jpg будет что-то вроде этого. Считаю крайне удобной фичей на стадии проектирования прототипа, когда отвлекаться на спрайты не хочется и нет времени.
среда, 23 декабря 2009 г.
В догонку сразу.
Из планируемых в ближайшее время фишек - менеджер загрузки. Это часть Quad engine, которая обеспечивает удобную интеграцию окна загрузки с процессом загрузки файлов.
Принцип работы - создается процедура OnLoading, в которой описана загрузка всех нужных программе ресурсов, и которая меняет один из параметров - PercentDone. Параметр необходим для индикации процесса загрузки. Эта процедура передается как параметр при создании менеджера загруки. Менеджер загрузки стартует эту процедуру и отслеживает переменную PercentDone. Процедура стартует в отдельном потоке, что дает возможность рисовать плавные анимации на экране в процессе загрузки. Как только процесс завершен, PercentDone становится равной 100.0 и менеджер загруки автоматически удаляется.
При создании менеджер загрузки вводит ограничение модулю QuadRender на кол-во кадров в секунду, который тот должен отрисовывать. По уничтожению - снимает ограничение. Это необходимо для того, чтобы загрузка не длилась очень долго. Для простейшего индикатора загрузки будет достаточно нескольких кадров в секунду. Для более сложных - 20-30.
Разумеется, менеджер загрузки можно создавать несколько раз, или даже несколько экземпляров одновременно, если имеется такая необходимость.
Из планируемых в ближайшее время фишек - менеджер загрузки. Это часть Quad engine, которая обеспечивает удобную интеграцию окна загрузки с процессом загрузки файлов.
Принцип работы - создается процедура OnLoading, в которой описана загрузка всех нужных программе ресурсов, и которая меняет один из параметров - PercentDone. Параметр необходим для индикации процесса загрузки. Эта процедура передается как параметр при создании менеджера загруки. Менеджер загрузки стартует эту процедуру и отслеживает переменную PercentDone. Процедура стартует в отдельном потоке, что дает возможность рисовать плавные анимации на экране в процессе загрузки. Как только процесс завершен, PercentDone становится равной 100.0 и менеджер загруки автоматически удаляется.
При создании менеджер загрузки вводит ограничение модулю QuadRender на кол-во кадров в секунду, который тот должен отрисовывать. По уничтожению - снимает ограничение. Это необходимо для того, чтобы загрузка не длилась очень долго. Для простейшего индикатора загрузки будет достаточно нескольких кадров в секунду. Для более сложных - 20-30.
Разумеется, менеджер загрузки можно создавать несколько раз, или даже несколько экземпляров одновременно, если имеется такая необходимость.
QuadRender:
Модуль, отвечающий за отрисовку графики.
На данный момент поддерживает:
QuadTexture:
Модуль, отвечающий за загрузку и отрисовку спрайтов (через QuadRender)
На данный момент поддерживает:
Модуль, отвечающий за отрисовку графики.
На данный момент поддерживает:
- Базовую инициализацию Direct3D, установку начальных параметров (таких как ширина, высота рабочей поверхности, хендл)
- Отрисовку прямоугольников
- Переключение режима прозрачности (в зачаточном состоянии)
QuadTexture:
Модуль, отвечающий за загрузку и отрисовку спрайтов (через QuadRender)
На данный момент поддерживает:
- Загрузку из BMP, JPG (только размерности степени двойки)
- Создание текстуры с одним кадром
- Отрисовку спрайта в заданных координатах. Точка рисования - верхний левый угол спрайта.
- Отрисовку спрайта с поворотом на заднанный угол (в градусах). Центром является точка указания рисования.
- Масштабирование спрайта по шкале 1 = истиный размер. 0 - нулевой. Тоесть 3 - увеличение по линейным параметрам в 3 раза.
Подписаться на:
Сообщения (Atom)