184
« dnia: 11 Lutego 2017, 13:37:36 »
Moim zdaniem trzeba pozbyć się zależności od windowsizmów i wykorzystać wieloplatformowe biblioteki:
- okienka, mysz i klawiatura, tworzenie kontekstu GL: Trzeba wywalić to dziwne tworzenie kontekstu WGL, jak i windowsową obsługę komunikatów. GLUT to już trochę zabytek, więc pewnie lepsze będzie popularne GLFW. Ze względu na to że WM_COPYDATA jest wykorzystywane do jakiegoś IPC, to będzie trzeba je czymś zastąpić, najprościej pewnie zwykłym socketem. (na win pewnie zwykły tcp na localhoście, na unixach można socketem na pliku). Chociaż właściwie to nie wiem czy to WM_COPYDATA jest wykorzystywane do czegoś praktycznego, czy jakaś nieużywana pozostałość?
- renderowanie fontów: Jak nie będzie ani WGL ani GLUT, to trzeba sobie jakoś poradzić z wyświetlaniem tekstu. Zwykle wykorzystuje się FreeType żeby wyrenderować tekst do tekstury.
- dźwięk: Oczywiście trzeba pozbyć się DirectSound. OpenAL wygląda sensownie.
- LPT: AD 2017 i LPT? To bym wywalił w ogóle.
- UART: Tu coś trzeba pewnie wymyślić. Albo znaleźć jakąś wieloplatformową libkę, albo napisać po prostu dwie implementacje pod windowsa i unixy, z tym nie powinno być dużo problemów.
- PoKeys55: Nie patrzyłem dokładnie co to za wynalazek, ale wygląda na jakieś proste USB. Jeżeli czyste usb to libusb-1.0, jeżeli hid to HIDAPI.
Co do modernizacji silnika graficznego, to koniecznie trzeba pozbyć się fixed pipeline. Absolutne minimum jakie można wspierać to OpenGL 2.0, chociaż trzeba by się zorientować czy komuś to w ogóle potrzebne, bo nowocześniej i wygodniej by było robić na 3.2 core profile. Trzeba też wywalić rendering na displaylistach. Jak już wszystko będzie na współczesnym GL to myślę że dodanie współczesnego oświetlenia, cieni, ładnej wody, light blooma od lamp, może odbić, nie powinno być już dużym problemem.
Oczy mi krwawią od tego kodu, ale obecnie bawię się żeby przenieść sterowanie i tworzenie kontekstu na GLFW. Za tydzień pewnie napiszę co udało mi się zrobić.