Quantcast
Channel: Сообщество PHP DevelStudio - среда разработки программ
Viewing all articles
Browse latest Browse all 6336

FFI Blitz3D - функции для работы с 2D и 3D графикой через BlitzBasic.

$
0
0
На днях что-то ударило в голову, захотел найти PHP для Blitz3D и случайно наткнулся на старую тему на этом же форуме, про Blitz3D SDK... Решил сделать Blitz3D для PHP, так как в старой теме ничего не осталось, работало не на FFI и явно там не всё было экспортировано...
Сделал! И вроде неплохо работает!
Минус один - лицензия Blitz3D...
Хотя используется Blitz3D SDK, который лежит на code.google, у которого не понятная лицензия...
Хотя вроде и на официальном сайте есть Blitz3D SDK за 100$...

В общем, в любом случае бесплатной фигни поделать можно, хотя бы для развития и интереса!

Установка проста:
- b3d.lib.php кидать в скрипты
- b3d.dll кидать рядом с exe, ну или куда угодно и тогда перед использованием вызвать функцию bbInit('<путь к дллке>');

Этих файлов должно вполне хватить, помимо того, что должен стоять DirectX 7 (или 9) или выше!




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

Пример перемещения куба стрелочками.
Скрытый текст:


PHP код:

bbBeginBlitz3D();
bbGraphics3D(640,480,16,2);
bbSetBuffer(bbBackBuffer());
$cam=bbCreateCamera();
bbPositionEntity($cam,0,5,-10);
$lit=bbCreateLight();
$cub=bbCreateCube();

Timer::setInterval(function($timer) use ($cam,$lit,$cub){
    if (
bbKeyDown(200))
       
bbMoveEntity($cub,0,0,0.1);
    if (
bbKeyDown(208))
       
bbMoveEntity($cub,0,0,-0.1);
    if (
bbKeyDown(203))
       
bbTurnEntity($cub,0,1,0);
    if (
bbKeyDown(205))
       
bbTurnEntity($cub,0,-1,0);
    
bbUpdateWorld();
    
bbRenderWorld();
    
bbFlip();
},
1); 


Пример родительской зависимости.
Скрытый текст:


PHP код:

bbBeginBlitz3D();
bbGraphics3D(640,480,16,2);
bbSetBuffer(bbBackBuffer());
$lit=bbCreateLight();
$sp[0]=bbCreateSphere(8);
bbEntityAlpha($sp[0],0);

for(
$i=1;$i<=99;$i++){
    
$sp[$i]=bbCreateSphere(8,$sp[$i-1]);
    
bbPositionEntity($sp[$i],1,1,1);
    
bbEntityColor($sp[$i],250,215,$i*2);
    
bbEntityAlpha($sp[$i],(100-$i)*0.01);
}

$cam=bbCreateCamera(0);
bbPositionEntity($cam,0,30,0);

Timer::setInterval(function($timer) use ($cam,$sp){
    for(
$i=1;$i<=99;$i++)
        
bbTurnEntity($sp[$i],0.1,0.2,0.3);
    
bbPointEntity($cam,$sp[99]);
    
bbUpdateWorld();
    
bbRenderWorld();
    
bbFlip();
},
1); 



А также советую этот сайтик с собранием интересных мануалов по Blitz3D:
http://gamesmaker.ru/3d-game-engines/blitz3d/
Вложения

Viewing all articles
Browse latest Browse all 6336

Trending Articles