Лицензию на код? Я в них не разбираюсь. Как называется лицензия, если вы можете делать с кодом абсолютно всё, что захотите? Free?
А на Github я не могу выложить — я никогда не работал с такими системами разработки и понятия не имею, как там вообще осуществляется работа. Я попытался понять, нифига не понял, что там вообще нужно делать. Дело в том, что я в команде никогда не работал (хоть я и пишу ПО по работе в НИИ, но я самоучка); у нас таких систем не применяется и опыта работы с ними у меня полный ноль.
Прикольно. :) Правда, а это точно софтверный рендер — вот то, что с освещением? Вроде как карта освещенённости используется, но её в софверном варианте довольно дорого выводить.
Ну, портировать-то как раз просто. Нужно просто в cVideo задать адрес буфера, выделенного с помощью malloc или new. А после рисования вывести этот буфер чем угодно. А клавиатура в движке привязана классом CKeyboard. То есть, клавиатура там виртуальная.
Кстати, я под QNX предыдущую версию портировал.
/* Y o u r D e s c r i p t i o n */
/* AppBuilder Photon Code Lib */
/* Version 2.03 */
/* Standard headers */
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <photon/PkKeyDef.h>
#include <Ph.h>
#include <Pt.h>
#include <Ap.h>
/* Local headers */
#include "ablibs.h"
#include "abimport.h"
#include "proto.h"
#include "ckbrd.h"
extern CKeyboard cKeyboard;
int OnActivate_Raw(PtWidget_t *widget, ApInfo_t *apinfo, PtCallbackInfo_t *cbinfo )
{
if (cbinfo->event->type==Ph_EV_KEY)
{
PhKeyEvent_t *kev=(PhKeyEvent_t *)PhGetData(cbinfo->event);
long scan=kev->key_scan;
if (kev->key_flags&Pk_KF_Scan_Valid)
{
if (kev->key_flags&Pk_KF_Key_Down) cKeyboard.SetKeyState(scan,true);
else cKeyboard.SetKeyState(scan&0x7f,false);
//printf("Scan:%i\r\n",scan);
}
}
return(Pt_CONTINUE);
}
Кстати, я тут про софтверный движок статью сделал: ссылка Там есть вариант с геометрическим порталом. Для работы под OpenGL достаточно из этого портала выкинуть нафиг софтверную отрисовку графики и обрезание граней при отрисовке. А вот обрезания порталов нужно оставить. Порталами у вас будут пустые грани клеток (где нет стен), а секторами — сами клетки. И вот в таком виде, думаю, все ваши проблемы с трассировкой лучей легко решатся.
Аккуратно-то аккуратно, но в устаревшей манере — я в современном Си++ плаваю, как топор (всякие лямбды и прочее для меня тёмный лес).
Там в Direct Draw просто получается адрес видеопамяти, который передаётся в класс видео CVideo. Дальше интерфейсный класс CIEngine определяет все функции вывода графики и загрузки данных. От этого класса унаследован класс CEngine_Base, в котором определены многие функции и добавлены защищённые функции, общие для все трёх вариантов движков (текстурирование линий, например). А уже от этого класса унаследованы сами движки. Все эти классы первым делом у CVideo запрашивают параметры видеоэкрана, а рисуют уже как в MS-DOS — записью в видеопамять.
Да, спасибо за информацию. :) Я не думал, что можно так сделать и оно выйдет. :) Это почти чит — разменять фигуры и уйти в эндшпиль, в котором есть ситуации, когда человеку просчитать куда как проще, чем программе. Тут таблицы Налимова могут помочь. Но я их не делал.
А на Github я не могу выложить — я никогда не работал с такими системами разработки и понятия не имею, как там вообще осуществляется работа. Я попытался понять, нифига не понял, что там вообще нужно делать. Дело в том, что я в команде никогда не работал (хоть я и пишу ПО по работе в НИИ, но я самоучка); у нас таких систем не применяется и опыта работы с ними у меня полный ноль.
Кстати, я под QNX предыдущую версию портировал.
Там в Direct Draw просто получается адрес видеопамяти, который передаётся в класс видео CVideo. Дальше интерфейсный класс CIEngine определяет все функции вывода графики и загрузки данных. От этого класса унаследован класс CEngine_Base, в котором определены многие функции и добавлены защищённые функции, общие для все трёх вариантов движков (текстурирование линий, например). А уже от этого класса унаследованы сами движки. Все эти классы первым делом у CVideo запрашивают параметры видеоэкрана, а рисуют уже как в MS-DOS — записью в видеопамять.
Поперхнулся чаем. Уверяю вас, там всё сейчас очень грустно с вменяемыми программистами. Это из личного опыта.