Увод у рачунарску графику

Графика се најједноставније може дефинисати као представљање информација помоћу слика, боја и облика. Рачунарска графика је област рачунарских наука која се бави изучавањем метода за рад са дигиталним графичким садржајима. Развој рачунарске графике започео је педесетих година прошлог века када је приказан први цртеж на рачунарском монитору. Након тога, креирани су и први програми за цртање и прве рачунарске игре са графичким елементима. Седамдесетих година прошлог века, развојем катодне цеви са екраном у боји, започиње интензиван развој рачунарске графике, који траје и данас.

Рачунарска графика данас има широку примену у свим људским делатностима. Може се поделити према различитим критеријумима:

  • према димензионалности графичких садржаја на 2D и 3D графику,

  • према динамичности графичких садржаја на динамичку и статичку графику,

  • према градивним елементима на растерску или векторску графику,

  • према учешћу човека у стварању графичких садржаја на интерактивну или неинтерактивну итд.

Данас је сваки рачунар у некој мери опремљен хардвером неопходним за рад са рачунарском графиком. Основни концепти рачунарске графике обухватају неколико важних појмова које треба да разумеш како би могао да креираш графичке садржаје у својим програмима.

Растерска слика састоји се од правоугаоне мреже пиксела. Пиксел је најмањи елемент растерске слике који има свој положај (x, y координате), нијансу боје и интензитет осветљености. Величина растерске слике, односно резолуција, одређена је бројем пиксела по ширини слике помноженим са бројем пиксела по висини слике, нпр. \(3072 \times{2048} = 6291456\) пиксела. Резолуција растерске слике често се изражава и у мегапикселима, нпр. \(6291456 \approx 6\) мегапиксела.

Боја се у рачунарској графици обично дефинише помоћу три основне компоненте – црвене, зелене и плаве компоненте. Овај систем се зове RGB (енгл. Red, Green, Blue). У RGB моделу свака од три компоненте представља се једним бајтом, односно са 8 бита. Пошто једним бајтом може да се представи 256 различитих вредности (од 0 до 255), значи да црвена компонента има 256 могућих интензитета, зелена такође 256, и плава 256. Комбинацијом три компоненте, укупан број могућих боја износи 256 × 256 × 256 = 16.777.216 боја - више од 16 милиона боја! Зато се често каже да је једна боја у RGB систему представљена са 24 бита (8 бита × 3 компоненте), па се овај начин приказа назива 24-битна боја (true color).

Неке од основних RGB комбинација су:

  • црна = (0, 0, 0)

  • бела = (255, 255, 255)

  • црвена = (255, 0, 0)

  • зелена = (0, 255, 0)

  • плава = (0, 0, 255)

  • сива = (128, 128, 128)

  • жута = (255, 255, 0)

  • цијан (плавозелена) = (0, 255, 255)

  • магента (ружичасто-љубичаста) = (255, 0, 255)

Координатни систем у 2D рачунарској графици има две димензије: хоризонталну (\(X\) оса) и вертикалну (\(Y\) оса). У овом систему, тачке се дефинишу као пар бројева \((X,Y)\), где је \(X\) координата која означава положај по ширини екрана, а \(Y\) координата која означава положај по висини екрана. У већини случајева, координата \((0,0)\) налази се у левом горњем углу екрана, а вредности \(X\) и \(Y\) расту ка десној и доњој страни екрана.

Векторски цртеж формира се коришћењем геометријских елемената (нпр. тачка, линија, крива, елипса, полигон и др.) заснованих на математичким изразима. На тај начин се слика може неограничено зумирати без губитка квалитета.

Програмски језик C# омогућава рад са графиком на различитим нивоима, у зависности од потреба апликације која се израђује.

  • GDI+ омогућава основну графичку функционалност у Windows Forms апликацијама, дефинисану у именском простору System.Drawing (напреднија функционалност дефинисана је у именским просторима System.Drawing.Drawing2D, System.Drawing.Imaging и System.Drawing.Text),

  • WPF (Windows Presentation Foundation) користи напреднији рендеринг заснован на DirectX-у па самим тим омогућава комплексније графичке ефекте (рендеринг (енгл. rendering) представља процес претварања дигиталних података у видљиву слику на екрану),

  • DirectX (SharpDX, SlimDX) користи се за креирање 2D/3D графике у реалном времену (обично у рачунарским играма),

  • OpenGL (OpenTK) користи се за мултиплатформску 3D графику, и

  • Unity Engine користи програмски језик C# као главни програмски језик за развој игара и интерактивних 2D/3D апликација.