Witam, poszukuję kursu, który nauczy mnie podstaw renderowania grafiki 2D, a także pomoże mi zrozumieć bardziej zaawansowane kody i mechanizm działania programów okienkowych. Umiem już podstawy programowania obiektowego w C++ i Javie, ale to niestety nie wystarcza w przypadku większości kursów uczących pisania programów graficznych. Niestety kursy, które znalazłem wybiegają za bardzo w przód z poziomem wiedzy. Potrzebny mi jest kurs, który uczy od podstaw programowania aplikacji graficznych w Javie lub C++. Zastanawiam się nad kursami OpenGL lub DirectX (chociażby WARP z 2004), ale nie wiem czy tematyką trafią one w moje główne zainteresowanie, czyli grafika 2D. Jeśli ktoś jest w stanie wskazać jakiś kurs lub dać jakąś sugestię, co do wyboru kursu, wyłbym wdzięczny.
Na początek ogarnij Windows BGI with Mouse: http://winbgim.codecutter.org/
Poniższy kurs nie jest idealny, ale daje radę:
Dzięki za te linki. Przyjrzałem się tej bibliotece i przyda się podczas tworzenia prototypu mojego programu i obmyślania, jak to wszystko złożyć w całość.
Natomiast aby stworzyć finalną wersję programu potrzebna jest mi obsługa całej palety kolorów i możliwość dorobienia GUI. Program ma wczytywać dane z bufora i przetwarzać je na punkty graficzne wyświetlane po kolei, aż do uzyskania pełnego obrazu. Potrzebna mi by była dość prosta biblioteka graficzna bo tak na prawdę jedyne elementy graficzne w programie to punkty rysowane po kolei w oknie. Z kolei Direct3D czy OpenGL to zaawansowane biblioteki zasięgiem idącym daleko daleko poza skalę moich tymczasowych zainteresowań. Co więc może być następnym krokiem po BGI?
Kacper Gutowski napisał(a):
Co więc może być następnym krokiem po BGI?
Myślę, że QT. Za pomocą QT możesz stworzyć sobie aplikację okienkową z GUI, a dzięki komponentowi QPainter będącego częścią QT możesz renderować grafikę.
Kacper Gutowski napisał(a):
Zastanawiam się nad kursami OpenGL lub DirectX (chociażby WARP z 2004), ale nie wiem czy tematyką trafią one w moje główne zainteresowanie, czyli grafika 2D.
Większość kursów OpenGL będzie dotyczyła grafiki 3D, ale nie ma problemu by pod OpenGL rysować „na płasko”, czyli z zerową współrzędną z
i bez perspektywy (glOrtho w fixed-function pipeline).
Słowem - 2D to 3D na płasko.
@Haskell: Dzięki za wskazanie Qt. Przydatna biblioteka.
@Azarien: Z rysowaniem na płasko to wiem, że istnieje coś takiego, użyję go w późniejszej fazie projektu.
Rysowanie obrazu na razie ogarnąłem przy pomocy kursów Qt. Udało mi się wygenerować prosty szum w okienku. Kolejna rzecz - kodowanie audio. Qt zawiera biblioteki audio, ale tu także jest potrzebna podstawowa wiedza o właściwościach cyfrowego dźwięku i jego generowania. Jako że chcę generować dźwięk niskopoziomowo, tu też potrzebne mi jest źródło wiedzy o kodowaniu pojedynczych sampli; a także o dekodowaniu ich z dowolnego urządzenia wejściowego. Dodatkowo w późniejszym etapie potrzebna mi będzie optymalizacja grafiki, jako że generowanych będzie kilkaset tysięcy punktów na sekundę. Zastanawiam się więc nad przejściem do nauki OpenGL żeby "ogarnąć" te wszystkie aspekty, no i będzie to wiedza na przyszłość. Czy to dobry pomysł żeby zacząć pracę przy OpenGL?
Ponadto z czasem będzie mi potrzebne renderowanie wideo w kodeku H.264 / H.265 i odczytywanie strumienia wideo w tym samym kodeku. Czy SDL będzie dobrą biblioteką do takich rozwiązań?
Sprecyzuj może, czy potrzebna jest przenośność programu na inne platformy niż Windows, czy też nie.
Bo jeśli nie to do audio/video masz np. DirectShow, czyli kodeki „zainstalowane w systemie”.
Niepotrzebna. W zasadzie to jeśli DirectShow wspiera manipulację strumieniami (łącznie z kodowaniem na żywo) to mi wystarczy.