forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Xors3D (http://forum.boolean.name/forumdisplay.php?f=126)
-   -   windows forms (http://forum.boolean.name/showthread.php?t=16244)

dsd 28.01.2012 01:04

windows forms
 
Куда там можно впихнуть вот такую функцию:
Код:

int horse(HWND hwnd){

        char msgBuffer[129];
                xSetRenderWindow((Handle)hwnd);
        xGraphics3D(640, 480, 32, false, true);
        int camera = xCreateCamera();
        int light = xCreateLight();
        int cube = xCreateCube();
        xPositionEntity(cube, 0.0, 0.0, 10.0);
        while(!(xKeyHit(KEY_ESCAPE) || !not_close))
        {
                xTurnEntity(cube, 0.1, 0.1, 0.1);
                xRenderWorld();
                sprintf(msgBuffer, "Hello 3D World!");
                xText(10, 10, msgBuffer);
                sprintf(msgBuffer, "FPS: %i", xMouseX());
                xText(10, 30, msgBuffer);
                xFlip();
        }
                xDestroyRenderWindow();
        return 0;
}

чтобы оно при старте приложения и хорс автоматом запустило.
А то на кнопку или пункт меню как то некошерно. В конструкторе оно превращается в бесконечный конструктор. В Form1_Load тоже самое. Как?

Dream 28.01.2012 18:55

Ответ: windows forms
 
в другом потоке, или просто через таймер, вызывать функцию обновления как же ещё

dsd 28.01.2012 19:58

Ответ: windows forms
 
Окау.

moka 28.01.2012 19:59

Ответ: windows forms
 
У окна есть событие Load и Shown, первое вызывается при окончании инициализации окна. Второе при первой активации окна. Свой код инициализации ксорса, положи во второй Load событие. А в событии Shown, создай отдельный поток, в котором будет уже сам цикл с обновлениями.
Имена событий, могут быть немного другими, но суть та же (т.к. основываюсь на .Net WinForms).

pozitiffcat 06.02.2012 09:30

Ответ: windows forms
 
По опыту скажу, удобней отрисовку в таймере реализовать с интервалом 5. Может оно и не правильно, и лучше через поток. Но я прошел и это. И решил что удобней через таймер, т.к. не надо пилить синхронизацию. Ну и интервал можно сделать автонастраивающимся взависимости от мощности железа, которое определяется времен последнего кадра (дельтой). как-то так...

moka 07.02.2012 03:10

Ответ: windows forms
 
Таймер - решение влоб. И никак не нормальное. Если у тебя проблемы с синхронизацией, то тут уж нечего говорить..

pozitiffcat 07.02.2012 09:28

Ответ: windows forms
 
Цитата:

Сообщение от MoKa (Сообщение 218866)
Таймер - решение влоб. И никак не нормальное. Если у тебя проблемы с синхронизацией, то тут уж нечего говорить..

MoKa я и не говорю как правильно, я говорю как на мой взгляд проще реализовать. Это мое ИМХО.


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

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