Модуль Magic API для BlitzMAX.

Обсуждение специальной версии Magic Particles (Dev), предназначенной для разработчиков игр.

Модуль Magic API для BlitzMAX.

Сообщение Альберт » Сб мар 28, 2009 11:16 am

Здравствуйте, Алексей!

Вобщем на данный момент есть продвижения. Теперь, частицы работают и отрисовываються исправно!
Тут на пути возникают новые вопросы...
Во первых каким образом происходит финальный рендер частицы? Я попробовал 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, но он тут может принимать
еще и отрицательные значения.
Альберт
 
Сообщения: 3
Зарегистрирован: Сб мар 28, 2009 11:13 am

Re: Модуль Magic API для BlitzMAX.

Сообщение Odin_KG » Сб мар 28, 2009 8:33 pm

Добрый день!

По какому варианту надо отрисовывать частицы? (тоесть как необходимо их правильно отрисовывать с точки зрения библиотеки?)

По второму. В реализации враппера как раз и используется этот вариант - можете посмотреть пример MP_Frame_Wrapper::Draw.

Тоесть, как я понял...data - указатель на картинку имеющую длинну length (в байтах). Правильно ли я понял, что мне необходимо
в BlitzMAX создать пустую картинку размером texture_width*texture_height, затем пикать инфу о цвете/прозрачности из data и заносить
его в родной Блицевский TPixmap (карта пикселей) созданной картинки ? - это в случае если картинка лежит внутри .ptc файла.

Совсем не так. Если картинка внутри ptc-файла, то это образ этого файла, т.е. это не список пикселей, а именно сам файл. Обычно умные движки предоставляют возможность загрузки образов файлов из ОЗУ.

Есть ли более простые ходы по выдергиванию картинки из файла?

Совсем простой ход - это сохранить образ из ОЗУ в настоящий файл, а затем его загрузить обычным способом, потом файл стереть.

ЗЫ Не могу расшифровать цвет частицы ABGR -> Alpha, Red, Green, Blue. В Бмаксе есть 64 битный тип данных Long, но он тут может принимать еще и отрицательные значения.

На C++ это выглядит так:
Код: Выделить всё
long alpha=(a & 0xff000000)>>24;
long blue=(b & 0xff0000)>>16;
long green=(g & 0xff00)>>8;
long red=r & 0xff;


& - это операция "логическое И"
>> - сдвиг битов на указанное количество раз
Аватара пользователя
Odin_KG
Administrator
Administrator
 
Сообщения: 841
Зарегистрирован: Чт янв 15, 2009 2:57 pm

Re: Модуль Magic API для BlitzMAX.

Сообщение Альберт » Чт апр 02, 2009 10:37 am

Здравствуйте Алексей!

Тут появилась проблемма.
Значит думал я что все вычисления по трансформациям партиклов происходит в ДЛЛ. Оказалось не так...запустил пример "weather -> Autunm_2" а листочки отказались крутиться (((
Попробовал крутить через структуру MAGIC_PARTICLE.angle - ноль реакции. Прошу у Вас помощи!

С Уважением Альберт.
Альберт
 
Сообщения: 3
Зарегистрирован: Сб мар 28, 2009 11:13 am

Re: Модуль Magic API для BlitzMAX.

Сообщение Odin_KG » Чт апр 02, 2009 4:09 pm

Здравствуйте, Альберт!

Значит думал я что все вычисления по трансформациям партиклов происходит в ДЛЛ.

Всё должно считаться в DLL.

Оказалось не так...запустил пример "weather -> Autunm_2" а листочки отказались крутиться (((

Непонятно... Скорее всего вы нашли глюк.

Попробовал крутить через структуру MAGIC_PARTICLE.angle - ноль реакции. Прошу у Вас помощи!

Я исследую этот момент. Как разберусь, напишу.
Аватара пользователя
Odin_KG
Administrator
Administrator
 
Сообщения: 841
Зарегистрирован: Чт янв 15, 2009 2:57 pm

Re: Модуль Magic API для BlitzMAX.

Сообщение Odin_KG » Чт апр 02, 2009 6:56 pm

Действительно это была моя ошибка. Вот вам новый вариант DLL:
http://www.astralax.ru/hlam/magic152_2.rar

Проверьте, пожалуйста, на устранение проблемы и напишите сюда о результате.
Аватара пользователя
Odin_KG
Administrator
Administrator
 
Сообщения: 841
Зарегистрирован: Чт янв 15, 2009 2:57 pm

Re: Модуль Magic API для BlitzMAX.

Сообщение Альберт » Пт апр 03, 2009 10:11 am

Добрый день!

Теперь все работает на ура! спасибо огромное за апдэйт!
Альберт
 
Сообщения: 3
Зарегистрирован: Сб мар 28, 2009 11:13 am

Re: Модуль Magic API для BlitzMAX.

Сообщение Odin_KG » Пт апр 03, 2009 12:13 pm

Здравствуйте!

Теперь все работает на ура! спасибо огромное за апдэйт!

Очень рад. Вам спасибо! Я эту ошибку не заметил, и она уже давненько там висела, правда, очень редко проявлялась.
Аватара пользователя
Odin_KG
Administrator
Administrator
 
Сообщения: 841
Зарегистрирован: Чт янв 15, 2009 2:57 pm


Вернуться в Magic API

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8

cron