Модератор
|
|||||||||||||||||||||||||||||||||||||||||
1 | |||||||||||||||||||||||||||||||||||||||||
Установка SDL и её Haskell- обёрток17.05.2017, 03:35. Показов 4083. Ответов 25
Метки нет (Все метки)
Что такое SDL можно посмотреть в вики . Не скрою, что я публикую здесь описание установки SDL т.к. она требуется в сочиняемом мной GUI, который когда ни будь, надеюсь, опубликую.
Но описание установки SDL, я полагаю, следует дать отдельной темой. Может, кого она и без моего GUI заинтересует. Кликните здесь для просмотра всего текста
Здесь приводится установка на Windows, но windows-специфична часть где описывается установка сишных библиотек. Последующая установка Haskell-обёрток к ним, скорее всего, независима от ОС.
Что нужно установить: саму SDL как библиотеку на С, и к ней два довеска, тоже на С, - SDL2_image что бы можно было загружать картинки в большинстве распространённых графических файлов, и SDL2_ttf что бы можно было пользоваться шрифтами (Да, да. Сама SDL даже не поддерживает вывод текста). После установки сишных библиотек (в linux они, наверняка встают «как родные») нужно установить к каждой из трёх свою обёртку. С обёртками на Haskell хроническая невезуха. Даже эти обёртки (тоненькие, небольшие), и то уже несовместимы с последней версией SDL. Но, ничего – мы их починим. И так, я предполагаю, что мы пользуемся Windows и у нас уже установлен stack. Как его устанавливать я недавно рассказывал. Если у кого что то другое -я не виноват. Я не могу настраивать и описывать этот процесс под всё. Пока не создаём никакие Haskell проекты. Первым делом мы обновляем и доустанавливаем идущий со stack-ом (а может и с ghc) вариант Arch Linux под Windows который называется msys2 . С указанного сайта его ставить не нужно. Он уже стоит в обрезанном виде. Главное, уже установлен пакетный менеджер ArchLinux-а называющийся pacman. Правда его нет в PATH Windows (и не нужно для наших целей), зато он виден stack-у. Выполняем в консоли.
Теперь устанавливаем четыре пакета – вспомогательный и те самые три сишных библиотеки : SDL2 (SDL второй версии), SDL2_image и SDL2_ttf. Сделаем это двумя командами (хотя можно четырьмя или одной – приглядевшись к командам можно понять что я имею ввиду) Для 64-х разрядной Windows нужно установить
Основную забираем в исходниках с https://github.com/haskell-game/sdl2 . Кто то может скачать git – ом, но я здесь не буду описывать ещё и git. Кто им не пользуется, может просто скачать sdl2-master.zip (справа на страничке есть подходящая кнопочка). Для определённости, я распаковал этот архив в c:\Users\User\Samples\Haskell и получился каталог проекта c:\Users\User\Samples\Haskell\sdl2-master (git установит в каталог без суффикса -master). Заходим в каталог и редактируем файл sdl2.cabal. Его синтаксис похож на синтаксис Haskell тем, что уровни вложенности задаются отступами. Где ни будь, между строкой начинающейся на library и строкой начинающейся на executable нужно вставить Код
cpp-options: -D_SDL_main_h Дополнительная правка, на случай, если мы хотим откомпилировать примеры идущие с пакетом.
В подкаталоги examples\lazyfoo\ и examples\twinklebear\ нужно положить по файлу Paths_sdl2.hs с таким содержимым:
Примеры можно запускать так
Кстати, примеры переписаны с сишных и можно нагуглить соответствующие статьи с описаниями. Устанавливаем обёртки для двух оставшихся библиотек скачав их с https://github.com/carldong/sdl2-ttf и https://github.com/sbidin/sdl2-image.git . Впрочем, ой! Вторая ссылка не работает. Только что работала и вдруг. Таков он – мир Haskell обёрток! Ну, она или восстановится, или можно будет попробовать один из её клонов. В крайнем случае, архив у меня есть. И, так, в обеих обёртках, в их .cabal файлы нужно так же добавить Код
cpp-options: -D_SDL_main_h И ещё по одному изменению потребуется в stack.yaml. Дело в том, что эти пакеты, очевидно, зависят от основного sdl2, но он не в репозитории stackage, а у нас, в локальной директории. Ничего страшного, между строками stack.yaml Код
packages: - '.' Код
packages: - 'c:\Users\User\Samples\Haskell\sdl2-master' - '.'
3
|
17.05.2017, 03:35 | |
Ответы с готовыми решениями:
25
Установка haskell и wxhaskell Установка Haskell Platform для Windows 7 Установка Darcs и Cabal в Haskell Platform Правильная установка Haskell. Утилита Stack |
650 / 260 / 16
Регистрация: 02.03.2014
Сообщений: 587
|
|
17.05.2017, 09:06 | 2 |
stack exec -- pacman -Syu
А если скажет, что он не знает никакого pacmanа, что делать Добавлено через 20 минут И вообще он мне пишет, что: Continuing dispite missing tool: msys2 Как это можно вылечить?
0
|
Модератор
|
|
17.05.2017, 14:24 [ТС] | 3 |
Бум разбираться. Прежде чем выполнять pacman вы создали и построили (stack build) хоть один проект после установки stack ? При первом построении он загружает компилятор под указанную сборку а с ним много чего.
Дальше. Если выполнить stack вне проекта то он выдаёт, в частности, bin-path. Видно что это его локальный PATH после которого идут пути из PATH винды. Вот его. C:\sr\snapshots\3f5948c6\bin C:\Users\User\AppData\Local\Programs\stack\x86_64-windows\ghc-8.0.1\bin C:\Users\User\AppData\Local\Programs\stack\x86_64-windows\ghc-8.0.1\mingw\bin C:\Users\User\AppData\Local\Programs\stack\x86_64-windows\msys2-20150512\mingw64\bin C:\Users\User\AppData\Local\Programs\stack\x86_64-windows\msys2-20150512\usr\bin C:\Users\User\AppData\Local\Programs\stack\x86_64-windows\msys2-20150512\usr\local\bin pacman.exe находится в c:\Users\User\AppData\Local\Programs\stack\x86_64-windows\msys2-20150512\usr\bin\ У вас так же? Может после установки стека запускали из неперезагруженной консоли? Сегодня ночью проверял на "чистой" машине. stack на ней ранее ставил. Там тоже, только ghc-8.0.2. p.s. Переменная окружения винды STACK_ROOT есть? Добавлено через 12 минут Araneo, не эта проблема? Раньше не устанавливали msys2/mingw на винду? И версия винды? Может десяткоспецифичная проблема? У меня даунгрейт с 10 на 7.
0
|
650 / 260 / 16
Регистрация: 02.03.2014
Сообщений: 587
|
|
17.05.2017, 14:33 | 4 |
Так, я сейчас не дома, написать подробно не могу. Винда семёрка, msys2 - был поставлен отдельно...
Переменные окружения сейчас посмотреть не могу
0
|
0 / 0 / 0
Регистрация: 22.03.2018
Сообщений: 10
|
|
31.03.2018, 21:01 | 6 |
stack exec -- pacman -Syu
И понеслась: Кликните здесь для просмотра всего текста
:: Synchronizing package databases...
mingw32 is up to date mingw64 is up to date msys is up to date :: Starting full system upgrade... :: Replace catgets with msys/msys2-runtime? [Y/n] y :: Replace libcatgets with msys/msys2-runtime? [Y/n] y warning: mintty: local (1322-2) is newer than msys (1~2.8.4-1) :: Replace repman-git with msys/pactoys-git? [Y/n] y resolving dependencies... looking for conflicting packages... Packages (83) bash-4.4.019-2 bash-completion-2.5-1 bsdcpio-3.3.2-1 bsdtar-3.3.2-1 ca-certificates-20170717-2 catgets-1.1-2 [removal] coreutils-8.26-2 curl-7.58.0-1 dash-0.5.9.1-1 file-5.32-1 filesystem-2018.02-2 findutils-4.6.0-1 flex-2.6.4-1 gawk-4.2.0-1 gcc-libs-6.4.0-3 gettext-0.19.8.1-1 glib2-2.48.2-1 gmp-6.1.2-1 gnupg-1.4.22-3 grep-3.0-1 gzip-1.9-1 heimdal-libs-1.5.3-9 icu-60.2-1 inetutils-1.9.4-1 info-6.3-1 less-529-1 libarchive-3.3.2-1 libasprintf-0.19.8.1-1 libassuan-2.4.3-1 libcatgets-1.1-2 [removal] libcrypt-2.1-1 libcurl-7.58.0-1 libdb-5.3.28-2 libedit-3.1-20170329 libexpat-2.2.5-1 libgcrypt-1.8.1-1 libgettextpo-0.19.8.1-1 libgpg-error-1.27-1 libgpgme-1.6.0-1 libidn-1.33-1 libidn2-2.0.4-2 libintl-0.19.8.1-1 liblzma-5.2.3-1 liblzo2-2.10-1 libmetalink-0.1.3-2 libnettle-3.3-1 libnghttp2-1.30.0-1 libopenssl-1.0.2.m-1 libp11-kit-0.23.9-1 libpcre-8.40-2 libpcre16-8.40-2 libpcre32-8.40-2 libpcrecpp-8.40-2 libpcreposix-8.40-2 libpsl-0.19.1-1 libreadline-7.0.003-2 libsqlite-3.19.3.0-2 libssh2-1.8.0-1 libtasn1-4.13-1 libunistring-0.9.7-2 libxml2-2.9.7-2 libxslt-1.1.32-1 m4-1.4.18-1 mpfr-4.0.1-1 msys2-keyring-r9.397a52e-1 msys2-runtime-2.10.0-2 ncurses-6.1.20180217-1 openssl-1.0.2.m-1 p11-kit-0.23.9-1 pacman-5.0.1-5 pacman-mirrors-20160112-1 pactoys-git-r2.07ca37f-1 pcre-8.40-2 pkgfile-17-1 rebase-4.4.2-1 repman-git-r23.87bf865-1 [removal] sed-4.4-2 tftp-hpa-5.2-2 tzcode-2018.c-1 wget-1.19.4-1 which-2.21-2 xz-5.2.3-1 zlib-1.2.11-1 Total Download Size: 1.03 MiB Total Installed Size: 212.09 MiB Net Upgrade Size: 76.68 MiB :: Proceed with installation? [Y/n] y :: Retrieving packages ... error: failed retrieving file 'filesystem-2018.02-2-i686.pkg.tar.xz' from downloads.sourceforge.net : The requested URL returned error: 404 warning: failed to retrieve some files error: failed retrieving file 'gnupg-1.4.22-3-i686.pkg.tar.xz' from downloads.sourceforge.net : The requested URL returned error: 404 warning: failed to retrieve some files error: failed to commit transaction (unexpected error) Errors occurred, no packages were upgraded. Однако, не обновляется. Что ж делать?
0
|
Модератор
|
|||||||||||
31.03.2018, 22:31 [ТС] | 7 | ||||||||||
У вас 32-х разрядная винда? Какая именно?
Попробуйте вначале
Далее stack exec -- pacman -Syu выполнился успешно оба раза. После первого было предложено закрыть, снова открыть консольное окно и повторить команду. Так же предлагалось удалить конфликтующие пакеты. Я соглашался. Обновление прошло успешно. Но у меня win7 64. Может в этом дело. Или нужно подождать пока на той стороне не починят. Загадочное сообщение У вас отдельно msys2 стоит, что ли? Можно попробовать удалить этот пакет - mintty. Кажется так
1
|
0 / 0 / 0
Регистрация: 22.03.2018
Сообщений: 10
|
|
01.04.2018, 21:21 | 8 |
сделал upgrade, update, удалил mintty
Результат - тот же. Вопрос: а можно ли установить как-то SDL без обновления mingw32 ? Да, у меня Windows 7 Home Basic 32 Вопорс №2: если ответ на первый вопрос отрицательный, то нельзя ли установить mingw32 вручную. Например, скачав откуда-либо свежие бинарники? Собственно хочется посмотреть на вашу работу, а не получается.
0
|
Модератор
|
||||||
01.04.2018, 21:41 [ТС] | 9 | |||||
Попробуйте
Установить то можно - http://www.msys2.org/ , но stack ставит свой, потому что он сам через него работает, и компилятор тоже. Пытаться шаманить обновив отдельный msys и заменив стековский - ну, не знаю. На настоящий момент не могу предложить решения.
0
|
Модератор
|
|
06.04.2018, 14:30 [ТС] | 10 |
Попробовал обновить SDL (сишную библиотеку) с 2.0.5 до 2.0.8 и сборку haskell до lts-11.3 под win.
sdl2-image со stackage вообще не собирается, выдаёт всё ту же ошибку SDL2/SDL_main.h:111:17: error: conflicting types for 'SDL_main' которую уже год как исправили разные умельцы на гитхабе. А при подключении sdl2-ttf приложение падает с сообщением стека Process exited with ExitFailure (-1073741511) при чём вывести какую то диагностику в лог не удаётся. Видимо, падает ещё до main. Без sdl2-image и sdl2-ttf приложение только с пакетом sdl2 со stackage запустить можно, но нельзя пользоваться stdin/stdout/(stderr?). При чём в приложении использующем SDL на сях можно нормально пользоваться стандартными дескрипторами. Опять что то нахимичили в обёртках. Не по теме: Я то надеялся что когда ни будь на stackage будут проверенные и под win пакеты. Увы. А вы говорите "павлины" ... :(
1
|
0 / 0 / 0
Регистрация: 22.03.2018
Сообщений: 10
|
|
07.04.2018, 20:19 | 11 |
Как всё печально.
Хотелось мне GUI, нативные, чтоб свои контролы делать более-менее легко было. Ну нет ничего для Хаскеля, хоть тресни. Одни биндинги разной степени кривости и устарелости. А сильно ваша библиотека на SDL завязана? Я вот мечтаю о родном GUI, и чтоб к тому же рендер можно было любой подцеплять. Чтоб написать несколько функций для отрисовки, а дальше библиотека работает сверху. Наподобие как в nuklear сделано. Но это опять-же С.
0
|
275 / 50 / 2
Регистрация: 10.10.2017
Сообщений: 54
|
|||||||||||
08.04.2018, 08:09 | 13 | ||||||||||
KolodeznyDiver, собрал (2 способами) и все работает. Имеем, Gentoo Linux, версии системных библиотек libsdl2 версия 2.0.8, sdl2-image версия 2.0.3, sdl2-ttf версия 2.0.14. В файле stack имеем resolver: lts-11.3, также пришлось дописать
extra-deps: - sdl2-ttf-2.0.2 Посмотрев https://hackage.haskell.org/pa... /changelog в файле library/GUI/BaseLayer/RunGUI.hs заменил
2
|
Модератор
|
|||||||||||
08.04.2018, 10:07 [ТС] | 14 | ||||||||||
Под линуксом то, обычно, работает. Но я хочу сделать кроссплатформенный GUI, иначе бы просто накрутил поверх иксов. А под win падает на тестовом примере (даже без GUI-SDL2), если просто взять код из https://www.stackage.org/haddo... 1/SDL.html и вставить инициализацию TTF, то упадёт Кликните здесь для просмотра всего текста
Добавлено через 51 минуту Так же падает если подключить к примеру sdl2-image и инициализировать его Кликните здесь для просмотра всего текста
0
|
Модератор
|
||||||||||||||||
15.04.2018, 14:52 [ТС] | 15 | |||||||||||||||
Застрял я пытаясь определить, что за ерунда творится с обёрткой sdl2 под виндой.
Точнее, я обнаружил, что если подключить sdl2 к Haskell проекту и вызывать её функции то консольное окно не создаётся. Кликните здесь для просмотра всего текста
В dbg.log выводится "No console window" - то есть, консольного окна нет с самого начала. Видимо по этому и падает приложение при попытке использовать пакеты sdl2-image, sdl2-ttf - эти пакеты, видимо, завершаются с выводом сообщения, а выводить сообщение в stdout (stderr?) невозможно. Логично попытаться найти почему в приложении нет консольного окна анализируя исходник пакета sdl2. Получить его можно или с помощью stack unpack sdl2, или git clone https://github.com/haskell-game/sdl2.git, или зайти на эту страницу и скачать архив оттуда. Смотрел и ничего не увидел. Скачал исходник сишной либы http://libsdl.org/release/SDL2-2.0.8.zip, но и там ничего не вижу. Использование сишной sdl2 из С не "теряет" консольное окно, в него можно выводить сообщения. Кликните здесь для просмотра всего текста
Я не понимаю как вообще удаётся создать неконсольное приложение на Haskell не указывая специальный ключ -optl-mwindows согласно документации на ghc. При чём, ладно бы была консоль, но изнутри sdl2 и или обёртки оно прибивалось бы. Так нет же - окна нет сразу после входа в main. Добавлено через 23 часа 48 минут Если нет консоли, то можно её создать. Кликните здесь для просмотра всего текста
Теперь можно выводить сообщения на консоль, зато при завершении программы выдаётся "warning: failed to uninstall default console handler". Что интересно, гугл на такое сообщение ничего подходящего не находит.
1
|
275 / 50 / 2
Регистрация: 10.10.2017
Сообщений: 54
|
|
11.05.2018, 16:44 | 16 |
KolodeznyDiver, так и собрал я под windows со всеми последними версиями, работает.
1
|
275 / 50 / 2
Регистрация: 10.10.2017
Сообщений: 54
|
||||||||||||||||||||||||||
11.05.2018, 22:55 | 18 | |||||||||||||||||||||||||
KolodeznyDiver, Ближе к вечеру постараюсь подробно расписать.
Добавлено через 2 часа 4 минуты Установка на windows 10 stack + sdl Далее все для x64, для x86 аналогично. Часть 1. Удаление
1. Удаляем stack (если установлен)
2. Удаляем haskell platform (если установлен) 3. Удаляем msys2 (если установлен) 4. Удаляем git (если установлен), так как git использует msys2 5. Вычищаем C:\Users"Имя вашего пользователя"\AppData\Local\Programs\stack 6. Чистим, что могло остаться от stack и msys2 Часть 2. Установка stack
1. Качаем самый последний stack отсюда
ссылка 2. Качаем самый последний msys2 отсюда ссылка 3. Устанавливаю на диск E:, поэтому создаю директории E:\_haskell_stack_exe --- здесь будет сам stack.exe E:\_haskell_stack_config --- здесь будут настройки stack E:\_haskell_stack_ghc --- здесь будет история ghci E:\_haskell_stack_local --- здесь stack будет ставить exe (в директорию bin) E:\_haskell_stack_programs --- здесь stack будет ставить ghc и msys2 E:\_haskell_programs --- здесь будем собирать наши проги 4. Я привык, знать куда что ставится, поэтому создаю файл _haskell_make_link.bat с таким содержимым
6. Теперь запускам установщик stack-1.7.1-windows-x86_64-installer.exe и устанавливаем (я устанавливаю в E:\_haskell_stack_exe). 7. Во время установки ставим галочки Add to user %PATH% и set %STACK_ROOT% to recommended default. Часть 3. Установка ghc
1. Открываем терминал cmd (я рекомендую ConEmu)
2. Запускаем stack update 3. Запускаем stack setup (тут установится ghc-8.2.2 из текущего плана 11.8 и установится msys2-20150512 в директорию E:\_haskell_stack_programs\x86_64-windows\). Этот msys2 слишком старый и нам не подходит, переходим к его обновлению. Часть 4. Установка msys2
1. Идем в директорию E:\_haskell_stack_programs\x86_64-windows\msys2-20150512\ и саму эту директорию оставляем, а все содержимое полностью удаляем.
2. Запускаем скачанный установщик msys2-x86_64-20161025.exe и устанавливаем msys2 в директорию e:\_haskell_stack_programs\x86_64-windows\msys2-20150512\ 3. В этой самой директории находим файл msys2.exe и запускаем. 4. В открывшемся окне даем команду pacman -Syyuu --- запустить обновление. На вопросы отвечаем y (сокращение от yes)! В конце терминал зависнет, закрываем его силой! 5. Опять запускаем msys2.exe и снова даем команду pacman -Syyuu, ждем когда она отработает. 6. Даем команду pacman -S mingw-w64-x86_64-pkg-config mingw-w64-x86_64-SDL2 mingw-w64-x86_64-SDL2_image mingw-w64-x86_64-SDL2_ttf 7. Нам надо будет клонировать с github репозитории, поэтому устанавливаем git командой pacman -S git, после этого данное окно можно закрыть. 8. Теперь директорию E:\_haskell_stack_programs\x86_64-windows\msys2-20150512\usr\bin\ куда установился git надо добавить в переменную %PATH%, для этого запускаем терминал от администратора! и даем команду setx path "%path%;E:\_haskell_stack_programs\x86_64-windows\msys2-20150512\usr\bin" 9. Теперь надо сделать важное, идем в директорию E:\_haskell_stack_programs\x86_64-windows\msys2-20150512\mingw64\bin\ и находим файл zlib1.dll, копируем его. 10. Идем в директорию E:\_haskell_stack_programs\x86_64-windows\ghc-8.2.2\mingw\bin\ находим там файл с именем zlib1.dll и заменяем его на скопированный ранее! Зачем это надо, можно прочитать здесь Часть 5. Собираем
1. Идем в директорию E:\_haskell_programs и запускаем терминал
2. В терминале делаем git clone https://github.com/haskell-game/sdl2 git clone https://github.com/haskell-game/sdl2-ttf git clone https://github.com/sbidin/sdl2-image.git git clone https://github.com/KolodeznyDiver/GUI-SDL2 Сборка sdl2 3. Идем в директорию sdl2, запускаем терминал и делаем stack init, открываем файл stack.yaml удостоверяемся, что resolver: lts-11.8 4. В этой же директории открываем файл sdl2.cabal и в разделе library (следите за отступами) удостоверяемся, что написано if os(windows) cpp-options: -D_SDL_main_h -DSDL_main_h_ Как выяснилось там уже это написано, так что двигаемся дальше! 5. В этой же директории делаем stack build Сборка sdl2-ttf 6. Теперь идем в директорию sdl2-ttf, и в файле stack.yaml прописываем flags: {} extra-deps: [] resolver: lts-11.8 system-ghc: true packages: - 'E:\_haskell_programs\sdl2\' - '.' 7. В этой же директории открываем sdl2-ttf.cabal и в разделе library удостоверяемся, что написано if os(windows) cpp-options: -D_SDL_main_h -DSDL_main_h_ Как выяснилось там уже это написано, так что двигаемся дальше! 8. В этой же директории делаем stack build Сборка sdl2-image 9. Теперь идем в директорию sdl2-image, и в файле stack.yaml прописываем resolver: lts-11.8 system-ghc: true packages: - 'e:\_haskell_programs\sdl2\' - '.' 10. В этой же директории открываем sdl2-image.cabal и в разделе library пишем, как вы уже догадались, if os(windows) cpp-options: -D_SDL_main_h -DSDL_main_h_ 11. В этой же директории делаем stack build Сборка GUI-SDL2 12. Идем в директорию GUI-SDL2 и в файле stack.yaml пишем resolver: lts-11.8 packages: - 'e:\_haskell_programs\sdl2\' - 'e:\_haskell_programs\sdl2-image\' - 'e:\_haskell_programs\sdl2-ttf\' - '.' 13. В файле library\System\Win32\Utils.hs заменяем строку
Вроде все! Проблемы
1. Если вылазит окно с проблемой, в котором inflatevalidate и libpng, то проделываем пункт выше по копированию zlib1.dll
2. Если не находит в терминале какую либо команду (например git или stack), запускаем в терминале path и смотрим пути, после чего их можно добавить с помощью setx или setx /M, как написано выше.
2
|
Модератор
|
|
12.05.2018, 21:21 [ТС] | 19 |
hardentoo, всё корректно установилось, собралось на win 7 x64. GUI-SDL2 работает.
Как найду время, выложу обновление под lts-11.8 и прочии свежие версии либ. Как ещё более найду время - ещё попилю GUI-SDL2. В первую очередь добавление checkBox и radioButton.
1
|
275 / 50 / 2
Регистрация: 10.10.2017
Сообщений: 54
|
|
12.05.2018, 22:25 | 20 |
Можно немного усовершенствовать процесс установки.
1. Не делать mklink /j C:\sr E:\_haskell_stack_config, а вместо этого выставить переменную STACK_ROOT в E:\_haskell_stack_config (ну не нравится мне ссылка в корне C: ) 2. Наоборот msys2 можно установить в любое место, например E:\msys2, а затем сделать mklink /j E:\_haskell_stack_programs\x86_64-windows\msys2-20150512 E:\msys2 3. Запустить msys2.exe и дать команду paccache -rk0 для освобождения места
1
|
12.05.2018, 22:25 | |
12.05.2018, 22:25 | |
Помогаю со студенческими работами здесь
20
Место ФП и Haskell в компьютерной индустрии (Для чего он нужен, этот Haskell?) Установка SDL 2 SDL: OpenGL: установка границ объема отсечения glOrtho(.); Как вывести текст на экран, используя библиотеку SDL TTF для SDL 2? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |