forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Проекты C++ (http://forum.boolean.name/forumdisplay.php?f=56)
-   -   axelynx (http://forum.boolean.name/showthread.php?t=14637)

HolyDel 19.09.2011 20:45

Ответ: axelynx
 
MoKa, спасибо тебе, дружище!
по кейворду CLI compatible я нашел крайне интереснеую тему.
конечно, писать целый враппер сильно нудно, но зато прикольно получается.

теперь с сишарповым проектом должны будут кататься две длл-ки - одна - сам движок, вторая CLI враппер под него.
синтаксис в шарпе получается примерно такой:

Код:

 
Engine eng = Engine.Init();
Window wnd = eng.AddWindow(800, 600, 32, WindowMode.WINDOWED, 8);
           

            Canvas c = eng.GetCanvas();
            c.ClearColor(0.2f, 0.3f, 0.4f, 1.0f);
            c.Clear();

            while (wnd.isRunning())
            {
                wnd.Flip(false);
                wnd.Sync();
            }
            wnd.Free();
            eng.Free();

естественно заврапливать буду только самые нужные вещи. ато нудно.

moka 19.09.2011 21:04

Ответ: axelynx
 
Врапить как понимаю в CLI не так и сложно? Покажи пример, или хотя бы идею?

А то на самом деле можно заврапить почти с тем же успехом и используя сам C#.

Суть в CLI, это писать С++ код, сразу совместимым образом, так получается можно его бюдет ющать в managed коде :)

Но то что выше, уже в разы круче и лучше чем если бы это дело нада было бы писать функциями (без объектов).

HolyDel 19.09.2011 21:19

Ответ: axelynx
 
ну вот например окошко:
Код:

public enum class WindowMode
{
        WINDOWED,
        FULLSCREEN,
        SPLASH,
        SIZEBLE
};

public ref class Window
{
        axelynx::Window *obj;
public:
        Window(axelynx::Window *obj_):obj(obj_){}

        bool Init(int width, int height, int bpp, WindowMode wm, int samples)
                                {return obj->Init(width,height,bpp,static_cast<axelynx::WindowMode>(wm),samples);}
        bool Init(IntPtr handle,int bpp, int samples)
                                {
                                        axelynx::Window::SystemHandle temp;
                                        temp.tag = static_cast<int>(handle);
                                        return obj->Init(&temp,bpp,samples);
                                }
        bool ChangeResolution(int width, int height, WindowMode wm)
                                {return obj->ChangeResolution(width,height,static_cast<axelynx::WindowMode>(wm));}
        bool Free()
                                {return obj->Free();}
        bool SetText(const wchar_t* title)
                                {return obj->SetText(title);}
        bool ReInit(int width, int height, int bpp, WindowMode wm, int samples)
                                {return obj->ReInit(width,height,bpp,static_cast<axelynx::WindowMode>(wm),samples);}
        bool Sync()
                                {return obj->Sync();}
        bool Flip(bool sync)
                                {return obj->Flip(sync);}
        bool Resize(int width, int height, WindowMode wm)
                                {return obj->Resize(width,height,static_cast<axelynx::WindowMode>(wm));}
        bool isActive()
                                {return obj->isActive();}
        bool isRunning()
                                {return obj->isRunning();}
        int GetWidth()
                                {return obj->GetWidth();}
        int GetHeigh()
                                {return obj->GetHeight();}
        int VSync(bool enabled)
                                {return obj->VSync(enabled);}
};

а прикольно тут то - что подключил dll-ку в референс и все работает из под коробки.

Цитата:

А то на самом деле можно заврапить почти с тем же успехом и используя сам C#.
тоже была такая идея.

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

HolyDel 27.10.2011 14:23

Ответ: axelynx
 
http://www.youtube.com/watch?v=h95nuNYF9ws

правда на видео артефакты...

moka 27.10.2011 17:40

Ответ: axelynx
 
Красава, а на чём они основаны, как выглядит взгляд поперёк линии?

HolyDel 27.10.2011 21:39

Ответ: axelynx
 
поперек линии хреновенько выглядит.

вот демка: http://axelynx.googlecode.com/files/...ltimonitor.zip

отдельная просьба потестить тем - у кого 2 и более монитора.

moka 27.10.2011 22:05

Ответ: axelynx
 
Получается это два триангла, смотрящие на камеру?

Полёт хороший, фпс ХЗ.

HolyDel 27.10.2011 23:16

Ответ: axelynx
 
вот с паузой (пробел)

http://axelynx.googlecode.com/files/...nitorPause.zip

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

фпс маловат (для моих демок :) ) из-за того, что считается каждая линия на ЦПУ. каждая линия, это по сути entity, со свой позицией, скейлом и т.д. ее можно вращать, двигать и другие, типичные для entity вещи с ней делать. считать 10к матриц трансформаций не очень дешево. на пробле фпс чуть выше. т.е. линия не вырождается, если на нее смотреть с торца.

moka 27.10.2011 23:23

Ответ: axelynx
 
Это для системы линий делается? Или для чего?

Имхо, если нужна система линий, то это должны быть тупо линии, там же позиции и т.п. Не нужны Нужна трансформация для массива линий (контейнер) а не для каждой имхо. А вообще нужны разные типы линий и контейнеров для них..

Поймал с торца, уху, кругленькая..

HolyDel 30.10.2011 21:14

Ответ: axelynx
 
ну да для системы линий. но их объединяет скорее только текстура и расположение в мире. т.е. если система попадает во фрустум - то и значительная часть линий - попадет хотябы частично.

добавил тупо линию. порадовало, что с новой архитектуре на то, чтобы добавить их в двиг ушло 4 минуты. еще столько-же на новую демку. со старым двигом я бы парился пол дня :) посидел с профайлером - поправил самые тормозные места.

демка новая:
http://axelynx.googlecode.com/files/LightBeams2.zip

может работать медленнее - но из-за рендера. можно отвернуться, чтобы не видеть линии. или нажать на пробел - чтобы оценить время рендера.

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

HolyDel 10.11.2011 23:09

Ответ: axelynx
 
запихал исходники опенсорсных либ в проект. теперь можно компилить как хочешь - хоть в 32 бита, хоть в 64, хоть в MT, хоть в MD. счастье. хочу сделать еще проект для code::blocks и компилятора MinGW. при компилции в 64 бита повылазило куча варнингов. будем править :)

потестите 64 битное приложение:
http://axelynx.googlecode.com/files/Test64bit.zip

pax 14.11.2011 22:18

Ответ: axelynx
 
380-390 FPS когда видно все кубики

HolyDel 18.12.2011 00:59

Ответ: axelynx
 
подключил bullet и opencl. думаю над сишным апи.

pozitiffcat 20.12.2011 14:17

Ответ: axelynx
 
А можешь показать какой нибудь няшный скрин?
А то карточка не держит на работе OGL 3, посмотреть охота, а дома некогда )))))))))))))

moka 20.12.2011 17:06

Ответ: axelynx
 
Просит вставить няшную медию с няшными шейдерами.. Это никак сути движка не покажет..


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

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