Grafika 3D i gry

W programowaniu współczesnych gier bardzo istotnym elementem jest obsługa grafiki (zazwyczaj 3D aczkolwiek nadal można spotkać i zapewne zawsze będzie liczna grupa gier 2D). Rzadko graficzna część gry tworzona jest od podstaw z bezpośrednim wykorzystaniem mechanizmów takich jak OpenGL. Najczęściej gry korzystają z silników gier zawierających silniki graficzne lub bezpośrednio z tych drugich.

Silnik gry różni się od silnika graficznego tym że dostarcza także mechanizmów służących do implementacji fizyki świata gry (w tym wykrywania kolizji), sztucznej inteligencji, obsługi wejścia (sterowania), dźwięku i sieci. Silnik graficzny dostarcza natomiast tylko wygodnych mechanizmów operowania obiektami graficznymi, maskując niżej poziomowe interfejsy takie jak SDL, czy jeszcze bardziej niskopoziomowy i ograniczony tylko do grafiki OpenGL. Wspomniany OpenGL jest API do obsługi grafiki 3D, najczęściej stosowany jest w zastosowaniach profesjonalnych, ale niekiedy także w grach - ze względu na otwartość specyfikacji oraz dostępność na wiele platform - zwłaszcza w grach z rodziny FLOSS). SDL jest z kolei biblioteką programistyczną zwalniającą programistę z konieczności operowania suchym OpenGL i jemu podobnymi mechanizmami, jednak jest dość niskopoziomowy i nie jest określany mianem silnika graficznego czy też silnika gry (dostarcza jednak mechanizmów obsługi wejścia itp).

Jednym z głównych zadań silnika graficznego jest robienie cullingu celem ograniczenia ilości geometrii ładowanej do potoku graficznego, pociąga to za sobą mechanizmy zarządzania przestrzennego sceną. Ponadto silniki muszą zarządzać samymi obiektami, ich ładowaniem oraz ustawianiem wymaganych przez nie parametrów potoku (w tym ładowaniem wymaganych shaderów). Z kolei podstawowym zadaniem silników fizycznych jest realizacja wykrywania kolizji. Na ogół do obu tych mechanizmów korzysta się z brył ograniczających. W grafice 3D często wykorzystuje się tekstury do innych niż standardowe zastosowań (np. przechowywania map oświetlenia).

Do najbardziej zaawansowanych projektów silników na wolnych licencjach należą: Irrlicht (licencja typu BSD), OGRE (LGPL), Crystal Space (LGPL). Dość bogatą bazę silników (w tym tych z rodziny FLOSS) można przeglądać na devmaster.

Interesującą koncepcją wydaje się stosowanie zwykłej kamery celem tworzenia modeli 3d (skanowania 3d) - informacje na temata projektu - ProFORMA by Qi Pan @ Cambridge University.

Zobacz też: porady dotyczące edytora grafiki 3D blender, przykładowe programy multimedialne w C/C++ (w tym związane z grafiką 3D), podstawa silnika 3d, portal o programowaniu gier, edytor shaderów dla KDE (łatka ułatwiająca kompilację w Debianie).



Copyright (c) 1999-2015, Robert Paciorek (http://www.opcode.eu.org/), BSD/MIT-type license


Redystrybucja wersji źródłowych i wynikowych, po lub bez dokonywania modyfikacji JEST DOZWOLONA, pod warunkiem zachowania niniejszej informacji o prawach autorskich. Autor NIE ponosi JAKIEJKOLWIEK odpowiedzialności za skutki użytkowania tego dokumentu/programu oraz za wykorzystanie zawartych tu informacji.

This text/program is free document/software. Redistribution and use in source and binary forms, with or without modification, ARE PERMITTED provided save this copyright notice. This document/program is distributed WITHOUT any warranty, use at YOUR own risk.

Valid XHTML 1.1 Dokument ten (URL: http://www.opcode.eu.org/programing/more/grafika_3d_i_gry) należy do serwisu OpCode. Autorem tej strony jest Robert Paciorek, wszelkie uwagi proszę kierować na adres e-mail serwisu: webmaster@opcode.eu.org.
Data ostatniej modyfikacji artykulu: '2015-10-10 11:33:49 (UTC)' (data ta może być zafałszowana niemerytorycznymi modyfikacjami artykułu).