Здравствуйте, Алексей!
Вобщем на данный момент есть продвижения. Теперь, частицы работают и отрисовываються исправно!
Тут на пути возникают новые вопросы...
Во первых каким образом происходит финальный рендер частицы? Я попробовал 2 варианта...
Тут есть две структуры :
1-й вариант :
struct MAGIC_PARTICLE
{
float x,y;
float size;
float angle;
unsigned long color;
unsigned int frame;
};
Дело в том, что оригинальный рендер BlitzMAX (модуль MAX2D) рисует графику НЕ через вершины. На скок
я знаю он напрямую пастит картинку в бэкбуфер, предварительно установив масштаб, позицию, угол, цвет, альфу и бленд.
Я попробывал отрисовать картинку именно через эту структуру, но появились проблеммы...
движения частиц - резкие, прерывистые, хотя в целом правильные. Размер картинок - очень большой. Угол тоже работает, но
меняеться дерганно. Остальные поля трогать не стал.
2-й вариант :
struct MAGIC_VERTEX_RECTANGLE{
float x1,y1;
float x2,y2;
float x3,y3;
float x4,y4;
};
Затем, интерес вызвала у меня эта структура. На скорую руку написал систему отрисовки полигонов, и отрисовал их по
данным этой структуры. Здесь частицы повели себя полностью адекватно!
По какому варианту надо отрисовывать частицы? (тоесть как необходимо их правильно отрисовывать с точки зрения библиотеки?)
Тут еще вопрос насчет картинок...
struct MAGIC_TEXTURE{
unsigned int length;
const char* data;
int crc;
const char* file;
const char* path;
float left,top,right,bottom;
int frame_width;
int frame_height;
int texture_width;
int texture_height;
int pivot_x;
int pivot_y;
float scale;
};
Тоесть, как я понял...data - указатель на картинку имеющую длинну length (в байтах). Правильно ли я понял, что мне необходимо
в BlitzMAX создать пустую картинку размером texture_width*texture_height, затем пикать инфу о цвете/прозрачности из data и заносить
его в родной Блицевский TPixmap (карта пикселей) созданной картинки ? - это в случае если картинка лежит внутри .ptc файла.
Есть ли более простые ходы по выдергиванию картинки из файла?
ЗЫ Не могу расшифровать цвет частицы ABGR -> Alpha, Red, Green, Blue. В Бмаксе есть 64 битный тип данных Long, но он тут может принимать
еще и отрицательные значения.