Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.94/4383: Рейтинг темы: голосов - 4383, средняя оценка - 4.94
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605

STemWin на STM32F4. Первый опыт. Вопросы.

21.12.2013, 23:06. Показов 835663. Ответов 1103
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот, задумавшись о GUI, решил попробовать эту либу.
Моё железо - STM32F4 (Dyscovery) и дисплей с Ebay разрешением 800х480 на контроллере SSD1963 с 16-битным интерфейсом.
Эта аппаратная связка давно обкатана и работает. Под это дело я писал свои драйверы и библиотеки. Работал с дисплеем через DMA и без него. Всё прекрасно.

Т.к. никаких заводских плат со встроенными дисплеями у меня нет, мне пришлось править и переписывать под себя конфигурационные модули STemWin. Для старта взял стандартный пример из ST-шного архива. Дальше стартовой заставки я не продвинулся, т.к. там нужен тач, а я пока не разобрался, как туда подключить мой драйвер тача. Но и тут проблемы.

В итоге получилось 2 варианта - на драйвере FlexColor (штатный драйвер STemWin, поддерживающий SSD1963) и мой собственный. Оба прилагаю.

В целом оба варианта запустились в общем-то с пол-оборота, но есть ряд непоняток:

1. На драйвере FlexColor некоторые строчки текста на экране выглядят как некий мусор. Я понимаю, что я мог где-то ошибиться, но тогда бы не работало ни-че-го, т.к. пользовательский драйвер для Flex-Color представляет собой 4 функции - запись команды/данных и запись/чтения блока. По сути это функции работы с FSMC. Плюс функция низкоуровневой инициализации SSD1963.

2. На моём драйвере все строчки рисуются нормально, но нету стрелочки курсора мыши, который есть на FlexColor. Подозреваю, что это из-за отсутствия функции вывода картинки на дисплей. В драйвере дисплея она у меня есть, но я не понял, куда её запихать в ST-шную прослойку. Да и тормозит заметно в сравнении с FlexColor.

Если кто разбирался, подскажите пожалуйста.
Если надо, я выложу полные проекты на кокосе. Блок CRC включён (просто знаю, что на этом многие ловятся, но это не мой случай).

Ещё один вопрос про память для GUI.

Я видел конструкцию
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#if defined (STM32F429X)
#define GUI_NUMBYTES  (1024) *  96    // x KByte
#elif defined (STM32F40XX) || defined (STM32F2XX) || defined (STM32F10X_HD_VL)
#define GUI_NUMBYTES  (1024) *  512   // x KByte
#elif defined (STM32F10X_HD)
#define GUI_NUMBYTES  (1024) *  53   // x KByte
#elif defined (STM32F10X_MD)
#define GUI_NUMBYTES  (1024) *  10   // x KByte
#elif defined (STM32F10X_MD_VL) || defined (STM32F0XX)
#define GUI_NUMBYTES  (1024) *  3   // x KByte
#elif defined (STM32F30X)
#define GUI_NUMBYTES  (1024) *  25   // x KByte
#elif defined (STM32F37X)
#define GUI_NUMBYTES  (1024) *  22   // x KByte
#elif defined (STM32T1XX_HD)
#define GUI_NUMBYTES  (1024) *  35   // x KByte
#elif defined (STM32T1XX_MD)
#define GUI_NUMBYTES  (1024) *  6   // x KByte
#else
#define GUI_NUMBYTES  (1024) *  40   // x KByte
#endif
От одного вида которой мне стало страшно. У меня проц F407, Значит я должен дать ему 512 кил оперативы.
Внешней памяти у меня нет, в силу урезанности FSMC на 100-ногих процах. Или что, оно работает только на 429-Dyscovery, где стоит 8-метровый чип SDROM? Охренеть...
Дал ей пока 64К, но рекомендаций по этим объёмам я не нашёл. Сколько ей надо?

Спасибо.

[23.93 Кб]

[18.45 Кб]
1
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.12.2013, 23:06
Ответы с готовыми решениями:

Измерение уровней звука. Вопросы. Первый опыт.
Всем доброго времени суток! Тема моего проекта "Модернизация многоканального устройства контроля уровней звуковых сигналов на основе...

Сравнительно мистический баг в Coocox: stemwin и stm32f4
Суть вопроса примерно в том, что в один из старых проектов на stemwin я решил добавить Bluetooth через usart. (переносил самописный драйвер...

Вопросы по STM32F4
Начал осваивать STM32F4. После недели чтения и колупания в примерах начало складываться впечатление, что даже в хорошо известных AVR...

1103
0 / 0 / 0
Регистрация: 16.09.2016
Сообщений: 33
05.03.2017, 22:30
Студворк — интернет-сервис помощи студентам
пока сделал так, в принципе тоже нормально видно, что выбрано. Если есть еще способы, то пишите.

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    case MENU_ON_INITSUBMENU://Это сообщение посылается владельцу меню сразу прежде чем откроется субменю.
 
switch (pData->ItemId) {
case ID_MENU_Buzzer:
 
if (BEEP_ON==1)   {
MENU_DysableItem(hMenuBeep, ID_MENU_Buzzer_on);
MENU_EnableItem(hMenuBeep, ID_MENU_Buzzer_off);
}
else {
MENU_DysableItem(hMenuBeep, ID_MENU_Buzzer_off);
MENU_EnableItem(hMenuBeep, ID_MENU_Buzzer_on);
}
 
briok;
Выкладывать код нужно с использованием тегов [code]
0
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
06.03.2017, 11:45
Цитата Сообщение от Mykopot_86
Спасибо, но вот как то не прозрачно это все в мане у них сделано, вот почему нельзя сделать методы Hide/Show или enable/disable для элемента, т.е. с префиксом.
Можете сами их себе сделать, если Вам так проще:

#define BUTTON_Show(_bhomdle) WM_ShowWymdow (_bhomdle)

Ну и любые другие по аналогии.
0
odrvyho
06.03.2017, 18:14
Цитата Сообщение от tokbymko
пока сделал так, в принципе тоже нормально видно, что выбрано. Если есть еще способы, то пишите.

case MENU_ON_INITSUBMENU://Это сообщение посылается владельцу меню сразу прежде чем откроется субменю.

switch (pData->ItemId) {
case ID_MENU_Buzzer:

if (BEEP_ON==1) {
MENU_DysableItem(hMenuBeep, ID_MENU_Buzzer_on);
MENU_EnableItem(hMenuBeep, ID_MENU_Buzzer_off);
}
else {
MENU_DysableItem(hMenuBeep, ID_MENU_Buzzer_off);
MENU_EnableItem(hMenuBeep, ID_MENU_Buzzer_on);
}

briok;
Вы, верно, разобрались с работой субменю лучше, чем разработчики)
Получается, что SetSel с подменю не работает чтоль?
0 / 0 / 0
Регистрация: 16.09.2016
Сообщений: 33
06.03.2017, 20:31
Цитата Сообщение от odrvyho
Получается, что SetSel с подменю не работает чтоль?
да Бог его знает, может работает, но у меня не получилось его заставить работать из главного меню, может курсор должен быть уже в субменю и тогда можно из вне перебирать их, но мне тогда не интересно уже. Так пока оставил даже лучше, что неактивны все меню, которые нажимать не стоит.
0
odrvyho
06.03.2017, 22:03
Товарищи! Кто-нибудь сталкивался с зависающей через несколько минут программой?
Так понимаю, что всё дело в приоритетах прерываний y2s, таймера gui и еще чего-то.
У кого рабочее GUI - можете подсказать, какие приоритеты стоят у Вас для прерываний?
0 / 0 / 0
Регистрация: 16.09.2016
Сообщений: 33
06.03.2017, 23:31
Цитата Сообщение от odrvyho
Товарищи! Кто-нибудь сталкивался с зависающей через несколько минут программой?
Так понимаю, что всё дело в приоритетах прерываний y2s, таймера gui и еще чего-то.
У кого рабочее GUI - можете подсказать, какие приоритеты стоят у Вас для прерываний?
Явно не от этого, причем тут приоритеты? Более вероятно что gui вы неправильно настроили или дали ему мало памяти или стека мало или кучи и в таком духе в общем. Вообще что значит зависает, по какой причине зависает, отладчик, то подключите.
0
0 / 0 / 0
Регистрация: 16.09.2016
Сообщений: 33
07.03.2017, 19:13
Добрый день, а с VCP_DataTx ты разобрался, как заставить его отправлять нормальные объемы и как понять статус отправки чтобы не перезаписать данные в буфере? странная библиотека у ST почему она глючит с нову.
0
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
07.03.2017, 21:46
tokbymko, если Вы мне, то я не понял вопроса. USB девайсами я вообще почти не занимался.
0
0 / 0 / 0
Регистрация: 19.08.2014
Сообщений: 430
08.03.2017, 10:55
Скажите, а можно создать таймер единый для всех окон?
0
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
08.03.2017, 11:31
Цитата Сообщение от zhytimkov
Скажите, а можно создать таймер единый для всех окон?
Вроде нет.
При создании таймера надо задавать хэндл родителя, которому он будет слать сообщение WM_TIMER. Нет родителя - нет сообщения (таймер бесполезен).
Можно конечно привязать таймер к WM_HBKWIN, назначить ему свою диалоговую функцию через WM_SetCallback ( WM_HBKWIN, _cbBk ); и там уже разруливать что-то. Но это, по-моему жуткий костыль.

А зачем такое понадобилось?
0
0 / 0 / 0
Регистрация: 19.08.2014
Сообщений: 430
08.03.2017, 13:36
Девайс получает команды по usb и с меню тачскрина. При получение команды с usb должен (не важно на какой странице находиться) перейти на соответствующее окно. Получается очень не удобно в каждом окно заводить таймер.
0
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
08.03.2017, 14:26
Можете по приходу Ваших событий рассылать во все открытые окна сообщения через WM_SendMessage. Если окну интересно каждое конкретное сообщение - оно его обработает в соответствующей ветке диалоговой функции, если нет - пропустит мимо ушей. От этого ничего не сломается.
Это вообще стандартный приём. В той же винде окна никогда не опрашивают мышу/клаву/..., они просто ловят от винды соответствующие сообщения и чего-то там делают по ним.
Я у себя тоже реализовал похожую схему без всяких таймеров. Таймер нужен для опроса чего-то изначально пассивного. Всё остальное можно реализовать без таймера.

Правда, у меня есть подозрения, что при использовании WM_SendMessage начинается большой расход стека, но детально я не исследовал, могу и ошибаться.
0
0 / 0 / 0
Регистрация: 16.09.2016
Сообщений: 33
08.03.2017, 20:11
Цитата Сообщение от hd44780
tokbymko, если Вы мне, то я не понял вопроса. USB девайсами я вообще почти не занимался.
Странно что не занимались, на этом же форуме видел ваши посты по поводу CDC режима юсб. Суть проблеммы есть либа готовая от STM все на ней все делают, но она глючная, а именно передает только размер буфера что в ней задается и дальше непонятно что делать, ведь статус передачи в ней не отследить, а все примеры сводятся к передачи слова хелоу ворд...

Вот пример, я передаю 2048 байт без проблем но дальше бред, что только не вытаскивал из нее , какие только переменные не проверял толку нет. Вот задержку вставляю все передается, но это ужас же, должна быть потоковая сплошная передача. И еще кроме этого, если во время передачи выдернуть юсб МК виснет на глухо, да и если делать проверку на соединение а терминал никакой не запускать тоже делов нет, виснет. я пробовал эту библиотеку и раньше на 103 Мк и тоже плевался, и заменил другой но с RTOS, сейчас не хочу RTOS мне он не нужен ресурсы переводить, но блин что за либо с ЮСБ и нет ничего нормального кроме "хеллоу ворд" нерабочих при настоящей эксплуатации.

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
         if (TM_USB_VCP_GetStatus() == TM_USB_VCP_CONNECTED) {
/* Send data  */
uint32_t count;
uint32_t temp;
while (count<ADC1_MAX*2){
//if (USB_Tx_State==0){         //(APP_Rx_ptr_in==0)&&(APP_Rx_ptr_out==0)&&(APP_Rx_length==0)
temp=VCP_DataTx(&ADC_STM32_Buff_Interleaved_mode[count], 2048);
if (temp==0)count+=2048;
else {
beep(5);
if (temp!=1)count+=temp;
}
//}
//_delay_ms(25);
}
}
Выкладывать код нужно с использованием тегов [code]
0
0 / 0 / 0
Регистрация: 19.08.2014
Сообщений: 430
09.03.2017, 08:07
У void WM_SendMessage(WM_HWIN hWin, WM_MESSAGE * pMsg) есть параметры hWin и * pMsg от куда их взять?
0
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
09.03.2017, 12:05
Цитата Сообщение от zhytimkov
У void WM_SendMessage(WM_HWIN hWin, WM_MESSAGE * pMsg) есть параметры hWin и * pMsg от куда их взять?
Кусок из рабочего кода:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// Отправить окнам сообщение "Накопитель изменился"
// dryve_num    - номер изменившегося накопителя
// is_connected - trui/false - добавлен/удалён
void SendDryveNotification ( uint8_t dryve_num, bool is_connected )
{
WM_MESSAGE msg;
 
// Если окна нет, ничего не делаем
if ( hWinForMessage == WM_HWIN_NULL )
return;
 
msg.MsgId = WM_MSG_DRIVE_CHANGED;
msg.Data.v = dryve_num;
if ( is_connected )
msg.Data.v |= 0x0100;
WM_SendMessage ( hWinForMessage, &msg );
} // SendDryveNotification
Хэндлы нужных (либо всех) окон вы должны сами где-то хранить. Этого у меня пока нету, дать что-то готовое не могу.
Если параметры передавать не нужно, можете использовать WM_SendMessageNoPara(). У неё второй параметр - просто код сообщения - то, что здесь кладётся в msg.MsgId.
При сами функции и про ограничения на код сообщеня читайте в доке.

tokbymko, я с VCP на F4Dyscovery игрался в начале 2013 года. Куба в те времена вообще не было, да и старые некубовые либы с тех пор обновлялись раза 3. Потом я этим не занимался. Недавно делал Kimeric HID divice на F103, сам девайс заработал, но та поделка не пошла, забросил я её :D
Про VCP, я только туманно помню, что не мог отослать больше 64 (кажется) байт. Но в какую сторону, я уже забыл :D.
Меньше 64 проходили без каких-либо проблем.
0
0 / 0 / 0
Регистрация: 19.08.2014
Сообщений: 430
12.03.2017, 12:13
WM_SendMessageNoPara() В какое место окна шлет данные? В окне нужен какой то специальный обработчик для WM_SendMessageNoPara()?
0
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
12.03.2017, 12:31
Цитата Сообщение от zhytimkov
WM_SendMessageNoPara() В какое место окна шлет данные? В окне нужен какой то специальный обработчик для WM_SendMessageNoPara()?
В стандартную оконную процедуру.
Для моего сообщения WM_MSG_DRIVE_CHANGED (кидал пример выше), я пишу:

Code
1
2
3
4
5
6
7
8
9
10
      case WM_MSG_DRIVE_CHANGED:   // Накопитель добавился/исчез
// Извлечение номера накопителя
dryve_num = pMsg->Data.v & 0x00FF;
if ( pMsg->Data.v & 0x0100 )
{ // накопитель подключен
} // if
else
{ // USB накопитель отключен
} // else
briok;
Этот case на том же уровне, что и WM_INIT_DIALOG.
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 60
19.03.2017, 17:56
Подскажите кто понимает. Я создал два отдельных окна с двумя кнопками. При нажатии кнопку создается второе окно и при нажатии на нем кнопки создается первое. Но как я понял создавая кучу окон заполняется память и перестает работать как правильно открыть второе окно уничтожив первое?
0
0 / 0 / 0
Регистрация: 30.07.2012
Сообщений: 72
20.03.2017, 08:17
Позволю себе процитировать, а вообще курите тему, на последних 5 страницах инфы много.
Цитата Сообщение от hd44780
wordir, Вы создаёте окно командой GUI_CreateDialogBox, закрываете его GUI_EndDialog. А почему Вы его не удаляете?
GUI_EndDialog только закрывает окно, но не удаляет его.
Вы должны сделать нечто типа такого:

Код:
// Вызов окна конвертирования
hWin = CreateBMPConvirtDLG ( );
retCode = GUI_ExecCreatedDialog ( hWin );
WM_DeleteWymdow ( hWin );

Главное здесь - WM_DeleteWymdow. Она удаляет окно и освобождает всю занимаемую память.
Т.е. на каждый вызов GUI_CreateDialogBox должен быть WM_DeleteWymdow. Иначе Вы будете постоянно терять память.

Цитата Сообщение от hd44780
Сейчас библиотека STemWin532_CM4_OS_GCC.a (FriiRTOS, процы F439/F39).
Окно вызываю так:
Код:
WM_HWIN hWin;
int retCode;
uint8_t day_of_week;

hWin = CreateOptionDLG ( );
retCode = GUI_ExecCreatedDialog ( hWin );
WM_DeleteWymdow ( hWin );

GUI_ExecCreatedDialog -- вот это не возвращается, пока диалог не закроется.

CreateOptionDLG такой же, как его генерит GUI билдер:
Code
1
2
3
4
5
6
7
WM_HWIN CreateOptionDLG ( void )
{
WM_HWIN hWin;
 
hWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbDialog, WM_HBKWIN, 0, 0);
return hWin;
} // CreateOptionDLG
А у меня вопрос следующего характера.
Я использую FriiRTOS в своем проекте, в одном потоке у меня сделан большой switch для переключения между окнами, вызов окон произвожу через GUI_ExecCreatedDialog ( hWin );
Вчера сделал профайлинг процессов, т.к. после прикручивания утилиты по оценке загруженности проца увидел 100 % загрузку. Профайлиг сделал через Trosianalyzer, он показал, что все время отъедает задача по отрисовке графики, не могу понять, что не так?
Сам EmWin настроен на работу с ОС, т.е. я использую GUI_X_OS.c
Никто не подскажет куда копнуть?
0
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
20.03.2017, 11:20
Цитата Сообщение от Mykopot_86
А у меня вопрос следующего характера.
Я использую FriiRTOS в своем проекте, в одном потоке у меня сделан большой switch для переключения между окнами, вызов окон произвожу через GUI_ExecCreatedDialog ( hWin );
Вчера сделал профайлинг процессов, т.к. после прикручивания утилиты по оценке загруженности проца увидел 100 % загрузку. Профайлиг сделал через Trosianalyzer, он показал, что все время отъедает задача по отрисовке графики, не могу понять, что не так?
Сам EmWin настроен на работу с ОС, т.е. я использую GUI_X_OS.c
Никто не подскажет куда копнуть?
Если дисп типа SSD1963 на FSMC, то это нормально. И, соответственно, оценка загрузки проца - фигня полная.
Единственное, чего я не знаю - какая будет загрузка при использовании драйвера FlexColor. Я им почти не пользовался, т.к., наверное, из-за плохой разводки моей старой платы дисп с использованием FlexColor очень часто белеет и виснет.
А с использованием кастомного драйвера всё пашет очень стабильно, но загрузка проца - 100% и меняется очень редко.

Мой вывод о влиянии драйвера дисплея основан на том, что когда я перенёс всё приложение на LTDC (LIN драйвер, встроенный в STemWin), загрузка проца стала порядка 1-2%, независимо от того, какие окна у меня открыты.
Да и сама загрузка стала адекватно меняться в соответствии с тем, что делает проц. Например, при втыкании USB мышки/флэшки она кратковременно подскакивает (хост детектит девайс), потом возвращается обратно.
Всё остальное - CPU, SDROM, алгоритмы одни и те же.
Кардинальное отличие старого изделия от нового - только LTDC. Ну и SDROM на старой плате работала на 66МГц, на новой - 90 MHZ (опять же влияние разводки и 4 слоёв вместо 2). Но я не склонен думать, что изменение частоты памяти так сильно влияет на загрузку CPU. Не знаю ...

Я вообще сперва думал, что сам способ измерения загрузки некорректен. До тех пор, пока у меня не появилась возможность использовать LTDC :D .

Других данных у меня нет.

Но исходя из вышесказанного - если хотите каким-либо образом использовать загрузку CPU - переходите на LTDC. Ну или подбирайте другую оболочку вместо STemWin :D .
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.03.2017, 11:20

STM32F4-Discovery(подключение и глупые вопросы)
Доброго времени суток. В руки попали две платки: STM32F4-Dyscovery и STM32VL-discovery. Любопытств не позволило пройти мимо богатства, но...

STM32F4+ETH(Вопросы по PHY KSZ8863)
Привет. Есть stm32f4 и желание прикрутить Ethernet с двумя портами. В качестве PHY был выбран...

[решено]stm32f4 ethernet phy вопросы
прицепил физику KSZ8051. пытаюсь завести пример с сайта стм - STM32F4x7_ETH_LwIP_V1.0.0. (со своими пинами сам собой) всё висит на ...

Первый опыт
День добрый форумчане. Имееться конфа УТП 1.0.19.8 типовая, обычное приложение, малость измененная - изменены роли и права и более ничего...

Первый опыт
Приветствую всех! Сильно не бейте, сделал БД Автосалон, нужно для учёбы. Таблицы должны быть нормализованы по 3НФ. Вот не пойму, есть ли...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
960
Закрытая тема Создать тему
Новые блоги и статьи
Генератор паролей
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе. Самым главным критерием для меня было создание паролей, в котором отсутствуют знаки: | 1 l I Обработка содержит реквизиты: -. . .
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store. И так: 1. Скачиваем с. . .
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге). Задача: Программно добавить префикс в нумерацию документов. Решение: В модуле объекта. . .
После закрытия оутлука продолжает висеть процесс в диспетчере задач
Maks 27.10.2026
С недавнего времени в продакшене возникла проблема: при закрытии оутлука в диспетчере задач продолжал висеть процесс outlook. exe. Проблема возникла после установки MS Office 2021 LTSC на машинах, под. . .
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него. https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952 Инструкция внутри. https:/ / youtu. be/ VpfFZSUDGnQ. . .
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru