среда, 30 декабря 2009 г.

Сделал буферизацию вершин в промежуточном буфере в памяти. Получилось стрёмно, если рисовать все время разные текстуры, однако при отрисовки однотипных текстур прирост до двух раз в скорости. Пришлось подшаманить и сделать более хитрый алгоритм отрисовки. В целом прирост раза в полтора получился в скорости.

Следующий шаг - удобное масштабирование. Шкала выбрана из расчета 1 = истинный размер, 0 - нулевой, 2 - удвоеный. Тип масштаба - float.

четверг, 24 декабря 2009 г.

Реализовал загрузку из JPG файла с "интуитивной альфой". То есть на вот таком вот изображении:

будет прозрачным всё, что не черное. Цвет поддерживается только черный, чтобы не лез мусор от jpg артефактов - сделана дельта. от 1 до 765, позволяющая игнорировать близкие к черному оттенки.

Результат загрузки по этому методу выглядит вот так:



Слева вверху пример отрисовки спрайта с заданием цвета каждой вершине.

Для bmp, tga цветовой ключ, соответственно, можно будет задать любой... Возможно для jpg будет что-то вроде этого. Считаю крайне удобной фичей на стадии проектирования прототипа, когда отвлекаться на спрайты не хочется и нет времени.

среда, 23 декабря 2009 г.

В догонку сразу.
Из планируемых в ближайшее время фишек - менеджер загрузки. Это часть Quad engine, которая обеспечивает удобную интеграцию окна загрузки с процессом загрузки файлов.
Принцип работы - создается процедура OnLoading, в которой описана загрузка всех нужных программе ресурсов, и которая меняет один из параметров - PercentDone. Параметр необходим для индикации процесса загрузки. Эта процедура передается как параметр при создании менеджера загруки. Менеджер загрузки стартует эту процедуру и отслеживает переменную PercentDone. Процедура стартует в отдельном потоке, что дает возможность рисовать плавные анимации на экране в процессе загрузки. Как только процесс завершен, PercentDone становится равной 100.0 и менеджер загруки автоматически удаляется.
При создании менеджер загрузки вводит ограничение модулю QuadRender на кол-во кадров в секунду, который тот должен отрисовывать. По уничтожению - снимает ограничение. Это необходимо для того, чтобы загрузка не длилась очень долго. Для простейшего индикатора загрузки будет достаточно нескольких кадров в секунду. Для более сложных - 20-30.

Разумеется, менеджер загрузки можно создавать несколько раз, или даже несколько экземпляров одновременно, если имеется такая необходимость.
QuadRender:
Модуль, отвечающий за отрисовку графики.
На данный момент поддерживает:

  • Базовую инициализацию Direct3D, установку начальных параметров (таких как ширина, высота рабочей поверхности, хендл)
  • Отрисовку прямоугольников
  • Переключение режима прозрачности (в зачаточном состоянии)

QuadTexture:
Модуль, отвечающий за загрузку и отрисовку спрайтов (через QuadRender)
На данный момент поддерживает:

  • Загрузку из BMP, JPG (только размерности степени двойки)
  • Создание текстуры с одним кадром
  • Отрисовку спрайта в заданных координатах. Точка рисования - верхний левый угол спрайта.
  • Отрисовку спрайта с поворотом на заднанный угол (в градусах). Центром является точка указания рисования.
  • Масштабирование спрайта по шкале 1 = истиный размер. 0 - нулевой. Тоесть 3 - увеличение по линейным параметрам в 3 раза.