forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   C++ (http://forum.boolean.name/forumdisplay.php?f=22)
-   -   Blitz3D engine (http://forum.boolean.name/showthread.php?t=4682)

IGR 10.10.2007 12:58

Re: Blitz3D engine
 
что за ??
ребята, это лишнее !! :)

Цитата:

Надеюсь в следующих постах этой темы будут появляться только новости о новом двиге !!

Данил 10.10.2007 13:11

Re: Blitz3D engine
 
Это всем ясно, что заниматся копи-пастом не круто.

Копи-пастом занимаются тем, кому лень писать, или только на стадии изучения языка...

А XenuS, я думаю, знает очень и очень много, раз собирается сделать такое...

ЛысыЙ_Чук-Иванчук 10.10.2007 17:44

Re: Blitz3D engine
 
Цитата:

Сообщение от IGR
Ок !! Ладн !!

Надеюсь в следующих постах этой темы будут появляться только новости о новом двиге !! :)

Хех не надейся, темы про создания нового двига в котором будет все,,, эээ это и есть самые флудерские темы!!!;)
Насчет двига- давайте дождёмся момента када увидим первый кубик, а пока просто пофлудим;)

XenuS 10.10.2007 17:48

Re: Blitz3D engine
 
лан, люди, не флудите так сильно=))))
наcчет SDK, то я не буду копи-паст по нескольким причинам(все они прозвучали):
- кроссплатформенность
- собственный опыт
- свое - приятнее-))
- в свое легде будет менять, обновлять и добавлять...=)
так что с нуля - это я твердо решил+))

кстати, сделал просмотр любой директории (ReadDir и т.п.) +)
через недели две перейду на 3D функции, вот так будет много геммороя....
Ой, чуть не забыл. Вот примерный план:
2Д:
- Математические функции
- каркас
- Строки
- файлы
- операции с файлами
- базовый ввод (клавиатура и мышь)
- директории
- текст
- вывод 2Д изображений
- загрузка текстур
- временные функции
- остальное (не вошло не в 2Д, не в 3Д)
3Д:
- Геометрия
- Поверхность
- Камера
- Свет
- Объектные оси
- Спрайт
- MD2
- BSP
- Плоскость
- Зеркало
- Ландшафт
- Слушатель/Звук
- Движение объекта
- Анимация объекта
- Объект
- Состояние объекта
- Столкновения объекта
- 3D Математика
- Графический режим
после всего:
- звук
- работа с сетью
- тени
- шейдеры
- доведение всего до логического конца по Блицу=)
- физика
- скриптовая система

примерно так....но план может меняться=)

IGR 10.10.2007 17:49

Re: Blitz3D engine
 
ЛысыЙ_Чук-Иванчук, мдє , наврно ты прав !! :)

ту Ксенус: ты же и физику для движка сам писать будеш ??

moka 10.10.2007 17:59

Re: Blitz3D engine
 
На счёт звука, настоятельно рекомендую кроссплатформенный fmod, недаром его юзают все гуру нашего времени, такие как Ubi Soft, EA, Crytek и другие. Советую.
Насчёт физики, хочу посоветовать PhysX, но он же не кроссплатформенны =( Но думаю что это исправиться?

H@NON 10.10.2007 18:00

Re: Blitz3D engine
 
Думаю из физики можно взять только столкновения, а то так все разленимся ведь. УЖ лучше больше возможностей, но не упрощений(в рамках надобности конечно).

johnk 10.10.2007 18:01

Re: Blitz3D engine
 
Начинай с 2Д :)

H@NON 10.10.2007 18:08

Re: Blitz3D engine
 
Цитата:

Сообщение от JohnK
Начинай с 2Д :)

Ну так список врде и начинается с 2д команд. И еще мне не понятен этот пункт:
Цитата:

...каркас

XenuS 10.10.2007 18:57

Re: Blitz3D engine
 
звук я пока не знаю, но на примете почитать про OpenAL...
физика, для демки двига, прикручу Newton наверняка, но в законченном(если хватит сил), будет моя(если красиво получится=)))
2 H@NON:
каркас - это сама инициализация окна через Graphics3D...
в общем, это уже есть+)

XenuS 11.10.2007 19:51

Re: Blitz3D engine
 
так, кто там хотел увидеть первый кубик?! =) кубика пока что нету...но есть первая графическая операция=)))
это вывод BMP=)
(есть функции по загрузке jpg, psd, pcx, tga...прост не успел вставить)...
пока что вывод....завтра сделаю свойства картинки....и добавлю остальные загрузки...
код:

#include "Blitz3D.h"

B3DImage taverna;
B3DImage pricel;


void main(int argc, char *argv[])
{
InitBlitz3DDevice(argc, argv);
Graphics3D(1024, 768, 32, 0);
AppTitle("Blitz3D engine by ~XenuS~");

taverna.LoadImage("image.bmp");
pricel.LoadImage("pric.bmp");


StartMainBlitzLoop();
}

void MainBlitzLoop()
{
RenderWorld();

taverna.DrawImage(0,0);
pricel.DrawImage(712,384);


Flip();
}

void KeyboardEvent(unsigned char key, int x, int y)
{
if (KeyDown(key,B3D_ESC))
End();
}

void MouseEvent(int button, int x, int y, int scale)
{
}

H@NON 11.10.2007 19:59

Re: Blitz3D engine
 
Аффтар жжошь, давай есчо!

ЗЫж под впечатлением этой статейки:http://boolean.name/showthread.php?p=60767#post60767

XenuS 11.10.2007 20:01

Re: Blitz3D engine
 
2H@NON хех=))

сорри, поправления к посту №75...
вот еще и текст=)))

#include "Blitz3D.h"

B3DImage taverna;
B3DImage pricel;
B3DText texts;

void main(int argc, char *argv[])
{
InitBlitz3DDevice(argc, argv);
Graphics3D(1024, 768, 32, 0);
AppTitle("Blitz3D engine by ~XenuS~");

taverna.LoadImage("image.bmp");
pricel.LoadImage("pric.bmp");

texts.LoadFont("Comic Sans MS",30,15,0,0,0);

StartMainBlitzLoop();
}

void MainBlitzLoop()
{
RenderWorld();

taverna.DrawImage(0,0);
pricel.DrawImage(712,384);

Color(255,255,0);
texts.Text(100,50,"Это демонстрация Blitz3D engine by ~XenuS~");

Flip();
}

void KeyboardEvent(unsigned char key, int x, int y)
{
if (KeyDown(key,B3D_ESC))
End();
}

void MouseEvent(int button, int x, int y, int scale)
{
}

заметьте, текст поддерживает русский в любом случае...=)

jimon 11.10.2007 20:13

Re: Blitz3D engine
 
XenuS
почему нельзя определить функцию
B3DImage * LoadImage(B3D_string * file_name); ?

в добавок хочется определенный конструктор
типа чтобы можно было вот так писать :
B3DImage * img = new B3DImage("image1.bmp");

убери наконец то StartMainBlitzLoop(); и прочий бред

в блице самое важное было ПРОЦЕДУРНОЕ программирование
так что давай делай функции типа DrawImage и тд
имхо лутче зделай как в BlitzMax - все функции в классах
но есть простые процедурные реализации

типа :
Код:

class foo
{
public:
foo(B3D_string * yo)
{
LoadImage(yo);
}

~foo(){}
void LoadImage();
};

B3DImage * LoadImage(B3D_string * string)
{
return New foo(string);
}

конешно маразм, но двиг у нас b3d like

да кстати хотелось бы видеть хоть какое то подобие управления памяти
хотя бы как в Irrlicht
в добавок еще нужно переопределить ВСЕ типы переменных,
для кроссплатформности

ну типа
#define B3D_Int int
и тд

потом весь платформнозависимый код (а его надо точно определить)
вынести в отдельные блоки

попробуй хотя бы скомпилировать ето чудо на MinGW
поймеш что MSVC6 далек от стандартов и нифига просто так не будет компилится

и еще хочется какой нибудь но фреймворк
классы типа B3D_String и прочее

XenuS 11.10.2007 20:42

Re: Blitz3D engine
 
ок, насчет процедурного программирования, я попробую исправить...так реально будет красивее и код и более похож на блиц...
переопределение типов(базовых) уже есть=))
класс B3DString есть....но его я сделал для удобства работы со строками...сложить, = и т.п. но из него получаешь указатель на текст...и работаешь как с простым массивом char...
например:
B3DString str;
str="Это ";
str+="строка";
cout << str.getPointer();
прост я это не показывал=)

а зачем управление памяти, как в иррлихт? я стараюсь сделать двиг, который будет элементарно выучить, не углубляясь в само программирование...(в блице3Д именно так)....

так, тогда в уже следующем моем посте относительно движка, я постараюсь выложить процедурный код...

jimon 11.10.2007 20:47

Re: Blitz3D engine
 
XenuS
когда память потечет узнаеш зачем управление памятью ;)

XenuS 11.10.2007 20:55

Re: Blitz3D engine
 
ааа.....ты про это=)))
не, у мня для каждого объекта есть метод Delete...
вот когда надо, тогда кодер и будет удалять=)))

moka 11.10.2007 21:52

Re: Blitz3D engine
 
XenuS, а такой варриант:

Энтити1=ЗагрузитьМешь(...)
Энтити1=ЗагрузитьМешь(...)

То первый останеться, а что делать с ним? Его уже ни как не тронешь, тока пиком получить - извращенство.
Поэтому такое нада удалить. Или пропала линка на объект - удаляем, поэтому юзер всегда будет уверен что потерянное будет удалено.

XenuS 11.10.2007 22:51

Re: Blitz3D engine
 
оо, я еще демку не выложил, а вы уже баги нашли=)))спс)
ну в таком случае я сделаю так:
......
int B3DMesh::loadMesh(char *f)
{
.....
//model - указатель на модель
if (model!=NULL)
delete []model;
.....
}
......

как нибудь так...сейчас буду это вписывать в 2Д изображения=)

jimon 11.10.2007 23:12

Re: Blitz3D engine
 
XenuS
хм, ты вообще работал с указателями, ссылками, обьектами и статическими елементами ?
понимаеш о чем я говорю ?

в новосозданом обьекте model в любом случае у тебя == NULL
ну и как же ты будеш проверять что УКАЗАТЕЛЬ затерся ?

для примера
Код:

foo * a1;
a1 = new foo;
a1 = new foo;

класс foo - любой
определи что тут указатель затерся ... ;)

ps. можно узнать сколько ты программируеш на C++ ?
и вообще с чем работал и что писал ?

ps2. сверх сложно перенести стиль blitz на c++ не ограничивая возможностей ООП

XenuS 11.10.2007 23:57

Re: Blitz3D engine
 
C++ я знаю 2 года....вот учусь ему=)
нет, ты мня не понял, я имел ввиду так:
первая модель загрузилась...значит то, во что она загрузилась, стало равно не NULL...а перед загрузкой пишем: если то, во что она должна загрузиться != NULL, тогда удаляем это....
ЗЫ а работал я с паскалем, вижуал басиком, блицом....вот С++ теперь(я ему учусь в инс-те)....а что? =)
ЗЫ2 я и не хочу полностью переносить стиль блица, у меня будут классы и все, что связано с ООП, но идея в том, что бы были функции\методы блица...не надо писать инициализацию окна, можно написать Graphics3D...не надо писать полностью код просмотра директории, можно написать:

B3DDirectory dir("C:/");
dir.ReadDir();
cout << dir.firstFile() << endl;
for (int i=0;i<dir.getCountOfFiles();)
{
char *k;
k=new char[255];
k=dir.nextFile();
cout << k;
cout << endl;
delete []k;
}
dir.CloseDir();
}
вот так=)))

jimon 12.10.2007 00:18

Re: Blitz3D engine
 
XenuS
эм, мы друг друга не понимаем :)
я просто говорю что ето не катит

ты предпологаеш что юзер выполнит такой код :
Код:

B3DImage img1;
img1.LoadImage("a1.bmp");
...
img1.LoadImage("a2.bmp");

тогда ты прав, и моделька очистится

а я предпологаю что юзер выполнит такой код :
Код:

B3DImage * img = new B3DImage;
img->LoadImage("a1.bmp");
...
img = new B3DImage; //тут затерся ойойой указатель на img :)
img->LoadImage("a2.bmp");

так что особой нужды в твоей проверке нету, но она нужна
в принципе НИКТО не пишет такие вещи прямо обьектами
обычно все такие обьекты хранятся в связаном списке

можно для начала добавить менеджер по принципу reference counting
тоесть есть начальный класс от которого все наследуется
потом если обьект где либо используется (на него есть ссылка)
то reference = 1, если обьект используется еще где-то
то reference = сколько обьектов юзает етот обьект

когда какому либо обьекту наш обьект не нужен
то его reference уменьшается на 1

когда какому либо обьекту наш обьект понадобился
то соответственно reference ++

когда reference достигает 0 - обьект само удаляется

в принципе реализация гарантирует, при прямых руках,
отсутствие утечек памяти, но руки реально нужны прямые :)

в принципе вот пример такого базового класса из того же irrlicht
Код:

        class IUnknown
        {
        public:

                IUnknown()
                        : ReferenceCounter(1), DebugName(0)
                {
                }

                virtual ~IUnknown()
                {
                }

                void grab() { ++ReferenceCounter; }

                bool drop()
                {

                        --ReferenceCounter;
                        if (!ReferenceCounter)
                        {
                                delete this;
                                return true;
                        }

                        return false;
                }


        private:

                s32        ReferenceCounter;
        };

просто надо гарантировать что при вызове "delete Engine;"
очистится все что выделял движок

для етого не плохо бы зделать свой менеджер памяти,
который бы выделял бы память

ps. я даю советы, потому что не одну шишку набил на етих проблемах
реально если неправильно зделать базовую архитектуру,
то потом все 400 кб кода прийдется тупо удалять ....
я один и тот же проект 3 раза переписывал,
только из-за того что не правильно делал менеджемент памяти

а теперь я пишу код который выдерживает самые жосткие проверки типа
Код:

while 1
Game = new Game
Game.Init()
Game.Update()
Game.Draw()
Game.Free()
Game = null
wend

и память не течет ... а твой проект так сможет ? ;)

dimanche13 12.10.2007 15:54

Re: Blitz3D engine
 
ппц, ну я так и не получил ответа, зачем нам еще один движек похожий синтаксисом на Блиц?

XenuS 12.10.2007 16:21

Re: Blitz3D engine
 
аааа, все, понял=))) ок, сейчас я буду переделывать структуру создания окна в процедурный и т.д., вот и это переделаю...
ЗЫ: главное, что я въехал сейчас, когда там не так много в двиге написано, а то потом все переделывать - это пипец! +)

затем, что это будет двиг под С++!!! обычный двиг использует в основном ООП, а тут можно будет как процедурно, так и ООП....
и в 3-х, мне хочется сделать такой двиг....я думаю, что этого достаточно для того, чтобы сесть и написать его, хотя бы в свое удовольствие...

Данил 12.10.2007 16:45

Re: Blitz3D engine
 
Цитата:

что это будет двиг под С++!!!
То есть отдельного IDE мы не увидим? и придеццо писать все с с++ синтаксисом?

dimanche13 12.10.2007 16:55

Re: Blitz3D engine
 
Вообще я обеими руками за ООП. Но процедурное программирование проще, что уж тут говорить. Я бы сказал процедурное для новичков. И раз тебе так хочется, то и вопросов нет. Пиши! Главное чтоб не перегорел.
ЗЫ. Мне б стока энтузазизма скока у тебя - я б тоже нечто подобное писал ;)

XenuS 12.10.2007 18:03

Re: Blitz3D engine
 
Данил, IDE будет, но после реализации скриптовой системы, а она в самом конце=))))
dimanche13, спс)

haedim 12.10.2007 18:26

Re: Blitz3D engine
 
o_O
Ух ты! Молодец!

Если надо, могу помочь с чем-нибудь, со звуком, например.
Насчет FMOD - полностью согласен с MoKой, пожалуй он самый лучший.
Насчет физики - как вариант предлагаю использовать Bullet - он кроссплатформенный и Open Source (что для меня весьма и весьма важно ;)), а демки у него выглядят вкусно. Сделал его программист, раньше работавший над Havok.

Насчет ООП - согласен с Jimon'ом - вариант "как в BMax", ИМХО, самый лучший из всех доступных.

Так что дерзай! И движок однозначно должен быть Open Source ;) .

Данил 20.10.2007 21:51

Re: Blitz3D engine
 
Как разработка? продвигается? что уже реализовано?

SBJoker 21.10.2007 02:52

Re: Blitz3D engine
 
Да FMOD конешно крут тока бесплатным движок с ним быть неможет ибо использование этой либы платное всего 5000$ c проекта!

Продолжайте в том же духе.

jimon 21.10.2007 08:53

Re: Blitz3D engine
 
SBJoker
ыыыы хто сказал ? :lol:
FMOD для бесплатных проектов бесплатен на все 101.5%
FMOD для шаровар стоит 100$
FMOD для проектов стоит 3000$
только вот FMOD Ex стоит 6000$

идинственое что за юзание mp3 приедется отдельно отдавать 2500$
что говорит о том что mp3 в комерческих играх - Г

http://www.fmod.org/index.php/sales

johnk 21.10.2007 10:34

Re: Blitz3D engine
 
Цитата:

идинственое что за юзание mp3 приедется отдельно отдавать 2500$
Только не в России.

SBJoker 21.10.2007 21:00

Re: Blitz3D engine
 
Цитата:

Сообщение от jimon
SBJoker
ыыыы хто сказал ? :lol:
FMOD для бесплатных проектов бесплатен на все 101.5%
FMOD для шаровар стоит 100$
FMOD для проектов стоит 3000$
только вот FMOD Ex стоит 6000$

ДА? А вот теперь глядя на меня скажи мне, меня первые два варианта устроят как разработчика игр на сд?

jimon 21.10.2007 21:29

Re: Blitz3D engine
 
SBJoker
мы говорим о freeware Blitz3D engine, а не о твоих проектах
тебя не устроит, автора етой темы - на ура ;)

Данил 21.10.2007 22:12

Re: Blitz3D engine
 
Хе, то есть если сделал игру на Blitz3D engine, то уже не продать. )
Единственный минус. А так все отлично.

IGR 23.10.2007 16:00

Re: Blitz3D engine
 
Цитата:

Хе, то есть если сделал игру на Blitz3D engine, то уже не продать. )
Единственный минус. А так все отлично.
шаровару продаеш и 100$ плотиш !!
если это выгодно, то пожалуйста !! ;)

H@NON 04.11.2007 19:12

Re: Blitz3D engine
 
Аффтар, гыде упдейт?
Надеюсь не бросил. ВЫкладывай новости, очень интересно что ты там еще сделал. А 2д уже сделано?

HolyDel 07.11.2007 01:47

Re: Blitz3D engine
 
H@NON, сначала надо сделать 3д, потом уже 2д через него. имхо.
а вообще, я против такого копирования, уж лучше продумать структуру, и создать что то свое.
например: http://www.boolean.name/showthread.p...4598#post64598

Данил 07.11.2007 01:51

Re: Blitz3D engine
 
А вообще где автор ? его уже давно не видно ... =(
пропал? о_О

Render 07.11.2007 02:13

Re: Blitz3D engine
 
Ну дак, и следовало такого ожидать. В 99% заявы, вот я делаю мега двиг, с мега наворотами заканчиваются сразу же после начала разработки. Автор начинает понимать все сложности разработки. Вот мне всё таки за 2 дня удалось довести 10 строк кода из Ксорса до толку )).

Данил 07.11.2007 02:33

Re: Blitz3D engine
 
Render, надеюсь что не бросил..
XenuS, иы же не бросил проект?

XenuS 07.11.2007 13:25

Re: Blitz3D engine
 
я не бросил!!!! я сейчас делаю скриптовую систему(конкретно, то делаю, чтобы все выражения считались правильно)...насчет 2Д была реализована загрузка BMP u TGA.....через дня 3 сделаю и jpg u dds. я щас со скриптами полностью разберусь и проЭкт пойдет дальше=)

Данил 07.11.2007 13:31

Re: Blitz3D engine
 
XenuS, надеюсь, будет png .. и будет выводится оно как в бмаксе.. надеюсь...

XenuS 07.11.2007 13:39

Re: Blitz3D engine
 
я тоже надеюсь=)))
аааа.....совсем забыл!!!
я сделал наконец не такую форму инициализации (StartMainLoop() && MainLoop()), а, как советовал jimon, через ООП!
сейчас выложить код не смогу, я с телефона, но примерно это так:

#include "Blitz3D.h"

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
glDevice *device;
device=new glDevice;
device->createDevice(1024,768,32,true);
while (device->run())
{
device->UpdateDevice();
device->GetSystemInformation();
device->beginScene();
device->RenderWorld();
device->Flip();
device->endScene();
}

return 0;
}

Синтаксис пока что похож на irrlicht, но я его изменяю на стиль б3д. но теперь мой двиг работает без всяких MainLoop"ов=))) Как хотите, так и пишите....никаких ограничений;)

XenuS 07.11.2007 21:20

Re: Blitz3D engine
 
очередной отчет:
добавил вывод прямоугольника(закрашен-незакрашен), оптимизировал
сам код рендера.....изменил вывод текста...теперь он стал в 100 раз удобнее...и сделал альфу в 2D...
код:
Код:

#include "Blitz3D.h"

xText txt;

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{           
        xDevice *device;
        device=new xDevice;
        device->setWindowTitle("~XenuS~ Soft");
        device->createDevice(1024,768,32,true);

        xFlatDevice *fr;
        fr=new xFlatDevice;

        txt.loadFont();
        while (device->run())
        {
                device->updateDevice();
                device->getSystemEvents();

                device->beginScene();

                device->renderWorld();
                fr->setColor(1,0,0);
                fr->setAlpha(1);
                txt.print("Hello, world! - %d",46);
                fr->setColor(0,1,0);
                fr->setAlpha(0.5);
                fr->drawRect(90,50,190,190,true);
                device->flip();

                device->endScene();
        }
  return 0;
}


moka 08.11.2007 11:52

Re: Blitz3D engine
 
fr-> и device-> постоянно нужно писать? Этож Очень неудобно :(

johnk 08.11.2007 13:56

Re: Blitz3D engine
 
Цитата:

fr-> и device-> постоянно нужно писать? Этож Очень неудобно
жжошь.

XenuS, что ужо готово то?

XenuS 08.11.2007 14:37

Re: Blitz3D engine
 
2MoKa: я решил просто поменять архитектуру всего двига...fr - это FlatRender(рендер плоскости), device->само устройство(WinApi, управление окном и т.д.), vr(Volume render) - рендер объемных объектов и задание всех их параметров...
2JohnK:
готово весь вывод 2Д и он оптимизирован, в отличии от предыдущей версии двига....сейчас делаю 3Д...как только разберусь со скриптами, выложу демку....можно будет через скрипты писать на двиге=))) (по-крайней мере меня это очень радует;)

moka 08.11.2007 15:07

Re: Blitz3D engine
 
XenuS, Хм, можно ещё собрать пару примеров сравнения скорости 2д, твоего, б3д и бм движков. (это намёк ;) )

H@NON 08.11.2007 15:12

Re: Blitz3D engine
 
Xenus, молодчиг! жги дальше. А альфа что и тексту будет ставиться? жесть.

haedim 08.11.2007 15:55

Re: Blitz3D engine
 
MoKa, это не удобно, это ООП ;) .
XenuS, лучше забрось ты этот WinAPI, ИМХО, гораздо лучше GLUT или GLFW.

XenuS 08.11.2007 16:33

Re: Blitz3D engine
 
2MoKa: ок, намек понял=))) либо сегодня, либо завтра дам потестить(кстати, рендер 3Д сейчас тестил.....я делаю б3Д на 15-20 фпс где 10000 кубиков;))
2haedim: да я бы делал и на glut...но многие(и на булке и нет) были против...тем более я так долго маялся, что бы код довести до такого состояния, в котором он сейчас=))))
>> А альфа что и тексту будет ставиться?
ты про что? :@

XenuS 08.11.2007 23:27

Re: Blitz3D engine
 
как и было обещано=)))) 10к кубиков.....фрустум включен....
в архиве лежат ехе и блица и B3Dengine...просьба отписаться=))
у меня:
мой двиг: 65-70 ФПС
блиц 3Д: 18-19 ФПС
(сам не знаю, отчего такая разница :@)
для примера я взял тоже кубики, как HolyDel=))
а, и еще....выход из моего двига пока Alt+F4...
код движка:
Код:

#include "Blitz3D.h"

#define M 10000

xFont *font;
xTexture *tex;
xCube c[M];

float fps;
int oif;

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
    SeedRnd(Millisecs());

    xDevice *device;
    xFlatDevice *flatDevice;
    xVolumeDevice *volumeDevice;

    device=new xDevice;
    flatDevice=new xFlatDevice;
    volumeDevice=new xVolumeDevice;
    font=new xFont;
    tex=new xTexture;

    device->createDevice(1024,768,32,true);
    device->setWindowTitle("~XenuS~ Soft engine (Blitz3D engine)");

    font->loadFont("Monotype Corsiva",36,0,1,0);
    flatDevice->setFont(font);

    tex->loadTexture("texture.bmp");
    tex->genTexture();

    for (int i=0;i<M;i++)
    {
        c[i].setTexture(tex);
        c[i].setPosition(Rand(-50,50),Rand(-50,50),Rand(-50,50));
        c[i].setRotation(Rand(0,360),Rand(0,360),Rand(0,360));
        volumeDevice->addMesh(c[i]);
        volumeDevice->applyMeshChanges(c[i]);
    }

    while (device->run())
    {
        device->updateDevice();
        device->getSystemEvents();

        for (int i=0;i<M;i++)
        {
            c[i].turn(0.1,0.2,0.3);
            c[i].move(0,0,0.1);
            volumeDevice->applyMeshChanges(c[i]);
        }

        volumeDevice->renderWorld();

        flatDevice->setXY(30,90);
        flatDevice->setColor(1,0,0);
        flatDevice->printText("FPS: %3.1f",fps);

        //flatDevice->setXY(30,210);
        //flatDevice->printText("Objects in frustum: %d",oif);

        volumeDevice->flip();
   
        fps=getFPS();
        //oif=volumeDevice->getObjectsInFrustum();
    }
    return 0;
}

код блица
Код:

Graphics3D 1024,768,32,1
SetBuffer BackBuffer ()

Lastfps#=0;
fps#=0;
time#=0
curtime#=0

font=LoadFont ("Monotype Corsiva",36,0,1,0)
SetFont font

Const N=10000

tex=LoadTexture("texture.bmp")

Dim c(N)
For i=1 To N
    c(i)=CreateCube()
    PositionEntity c(i),Rand(-50,50),Rand(-50,50),Rand(-50,50)
    RotateEntity c(i),Rand(0,360),Rand(0,360),Rand(0,360)
    EntityTexture c(i),tex
Next

cam=CreateCamera()

Repeat

    For i=1 To N
        TurnEntity c(i),0.1,0.2,0.3
        MoveEntity c(i),0,0,0.1
    Next

    RenderWorld
    curtime#=MilliSecs()
    fps#=fps#+1
    If curtime#-time#>=1000
        Lastfps#=fps#
        fps=0
        time#=curtime#
    EndIf
    Color 255,0,0
    Text 30,90,"FPS: "+Lastfps#
    Flip
Until KeyHit(1)
End


HolyDel 08.11.2007 23:49

Re: Blitz3D engine
 
а можно архивчег без блицевского ексешника?

XenuS 08.11.2007 23:53

Re: Blitz3D engine
 
конечно)

HolyDel 09.11.2007 00:00

Re: Blitz3D engine
 
60 фпс.
ограниченно частотой монитора.
+ - быстро
- - дурацкая текстура (199х год) (имею ввиду метод текстурирования)
вроде в исзодниках прописано, чтобы было показано скока объектов в зоне видимости, но почему то цифры я не заметил.

ЗЫ. Молодец, так держать!

XenuS 09.11.2007 00:03

Re: Blitz3D engine
 
спасибо=)
Цитата:

Сообщение от HolyDel
вроде в исзодниках прописано, чтобы было показано скока объектов в зоне видимости, но почему то цифры я не заметил.

тока в исходнике то что прописано про зону видимости, то взято в комментарии=))))

HolyDel 09.11.2007 00:07

Re: Blitz3D engine
 
Graphics3D 1024,768,32,1
SetBuffer BackBuffer ()

Lastfps#=0;
fps#=0;
time#=0
curtime#=0

font=LoadFont ("Monotype Corsiva",36,0,1,0)
SetFont font

Const N=10000

tex=LoadTexture("texture.bmp")

Dim c(N)
cub=CreateCube()
EntityTexture cub,tex
For i=1 To N
c(i)=CopyEntity(cub)
PositionEntity c(i),Rand(-50,50),Rand(-50,50),Rand(-50,50)
RotateEntity c(i),Rand(0,360),Rand(0,360),Rand(0,360)
Next

cam=CreateCamera()

Repeat

For i=1 To N
TurnEntity c(i),0.1,0.2,0.3
MoveEntity c(i),0,0,0.1
Next

RenderWorld
curtime#=MilliSecs()
fps#=fps#+1
If curtime#-time#>=1000
Lastfps#=fps#
fps=0
time#=curtime#
EndIf
Color 255,0,0
Text 30,90,"FPS: "+Lastfps#
Flip
Until KeyHit(1)
End

вот такой вариант для блиц кода (убраны явные ляпы, типа создавания каждый раз нового куба) дает 20 фпс. при отключении математики - 30.

HolyDel 09.11.2007 00:09

Re: Blitz3D engine
 
скажи скока объектов в зоне?

XenuS 09.11.2007 00:09

Re: Blitz3D engine
 
это были не ляпы=)))
в своем двиге я-то не копирую куб, а заного создаю его(пока еще нету копирования=))

XenuS 09.11.2007 00:11

Re: Blitz3D engine
 
1500-2000 стандарт.....(и там и там)
при 6000 в моем двиге фпс: 43-45

ЛысыЙ_Чук-Иванчук 09.11.2007 00:23

Re: Blitz3D engine
 
XenuS- А как увига с объектами в 50 к поликов?

XenuS 09.11.2007 00:39

Re: Blitz3D engine
 
а я еще не реализовал загрузку.....функция есть, но я сначала с родительской привязкой разберусь...

magpro 09.11.2007 01:23

Re: Blitz3D engine
 
XenuS Только респекты) дай потестить)


Часовой пояс GMT +4, время: 13:28.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot