Zaawansowane systemy programowania grafiki. Wprowadzenie. Podstawy OpenGL



Podobne dokumenty
Wprowadzenie do grafiki maszynowej. Wprowadzenie do historii OpenGL

Elementy do grafiki komputerowej. Wprowadzenie

Wprowadzenie do grafiki maszynowej. Wprowadzenie do wprowadzenia

Grafika Komputerowa. Wprowadzenie

GRAFIKA KOMPUTEROWA. Rozwiązania sprzętowe i programowe. Przyspieszanie sprzętowe. Synteza dźwięku i obrazu

GRAFIKA CZASU RZECZYWISTEGO Wstęp do programowania grafiki czasu rzeczywistego.

GRAFIKA KOMPUTEROWA. Rozwiązania sprzętowe i programowe. Przyspieszanie sprzętowe. Synteza i obróbka obrazu

Przyspieszanie sprzętowe

OpenGL - Open Graphics Library. Programowanie grafiki komputerowej. OpenGL 3.0. OpenGL - Architektura (1)

Wprowadzenie. Artur Staszczyk Bartłomiej Filipek

Grafika komputerowa. Grafika komputerowa. Grafika komputerowa

GRAFIKA CZASU RZECZYWISTEGO Wprowadzenie do OpenGL

Mobilne aplikacje multimedialne. OpenGL

Podręcznik użytkownika PCI-x Karta przechwytująca 4xHDMI

Analiza moż liwości i porównanie nowych ję zyków do programowania grafiki

Programowanie procesorów graficznych GPGPU

Systemy graficzne. dr inż. Mariusz Szwoch

Gry Komputerowe Laboratorium 1. Zajęcia organizacyjne Animacja z uwzględnieniem czasu. mgr inż. Michał Chwesiuk 1/22. Szczecin,

Karty graficzne możemy podzielić na:

Porównanie wydajności CUDA i OpenCL na przykładzie równoległego algorytmu wyznaczania wartości funkcji celu dla problemu gniazdowego

PORÓWNANIE WYDAJNOŚCI JĘZYKÓW CIENIOWANIA CG I HLSL

Wprowadzenie do QT OpenGL

Programowanie z wykorzystaniem technologii CUDA i OpenCL Wykład 1

Karty Graczne i Sprz towe Wsparcie Dla Graki 3D

Przetwarzanie obrazów w czasie rzeczywistym za pomocą GPU

Projektowanie aplikacji graficznych. dr inż. Jarosław Zubrzycki

Programowanie procesorów graficznych NVIDIA (rdzenie CUDA) Wykład nr 1

Karta graficzna karta rozszerzeo odpowiedzialna generowanie sygnału graficznego dla ekranu monitora. Podstawowym zadaniem karty graficznej jest

Karta przedmiotu. Podstawy programowania procesorów graficznych. realizowanego w ramach projektu PO WER

Karty graficzne: budowa, zasada działania, standardy, parametry, dodatkowe funkcje

dr inż. Jacek Dąbrowski, KSG

Grafika Komputerowa, Informatyka, I Rok

Architektura Komputerów

Gry Komputerowe - laboratorium 0

Wykład 4. Rendering (1) Informacje podstawowe

i3: internet - infrastruktury - innowacje

Projektowanie gier komputerowych. dr inż. Mariusz Szwoch

GRY KOMPUTEROWE 3D OpenGL DirectX Ogre3D Crystal Space ClanLib Irrlicht SDL Ardor3D jmonkey Engine GRY KOMPUTEROWE 2D ORX Troll2D

Grafika komputerowa i wizualizacja

Biblioteka OpenGL: Wprowadzenie

DirectX 10, przełom w grafice komputerowej?

GLKit. Wykład 10. Programowanie aplikacji mobilnych na urządzenia Apple (IOS i ObjectiveC) #import "Fraction.h" #import <stdio.h>

System 32-Bit 1: Microsoft Windows 7 Home Premium 2;, Professional, Ultimate, Enterprise Microsoft Windows 8/8.1, Pro, Enterprise 2;

1 Temat: Vertex Shader

Bartosz Bazyluk Wprowadzenie Organizacja i tematyka zajęć, warunki zaliczenia.

Podsystem graficzny. W skład podsystemu graficznego wchodzą: karta graficzna monitor

CUDA część 1. platforma GPGPU w obliczeniach naukowych. Maciej Matyka

JCuda Czy Java i CUDA mogą się polubić? Konrad Szałkowski

Monitoring i benchmarking Sprzętu pod Linuksem

Bartosz Bazyluk Wprowadzenie Organizacja i tematyka zajęć, warunki zaliczenia.

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

Graficzny edytor cieniowania

Karty graficzne. Dla DSI II

CZYM JEST KARTA GRAFICZNA.

Przechwytywanie obrazu przy wykorzystaniu funkcji systemu Windows 10.

GUI - projektowanie interfejsów

Bartłomiej Filipek

Plan wykładu. Akcelerator 3D Potok graficzny

Opis efektów kształcenia dla modułu zajęć

Wprowadzenie. Karty graficzne możemy podzielić na:

Temat: Wprowadzenie do OpenGL i GLUT

Wykład 5. Rendering (2) Geometria

Dowiedz się, jak tworzyć zapierające dech w piersiach gry 3D i efektowne, trójwymiarowe wizualizacje!

Grafika komputerowa i wizualizacja. dr Wojciech Pałubicki

Przewodnik. NVIDIA SLI Jak samodzielnie zbudować system NVIDIA SLI

Załącznik KARTA PRZEDMIOTU. KARTA PRZEDMIOTU Wydział Automatyki, Elektroniki i Informatyki, Rok akademicki: 2009/2010

Mobilne akceleratory grafiki

Architektura Systemów Komputerowych Rozwój akceleratorów grafiki 3D po 2001r.

Instrukcja instalacji oprogramowania pixel-fox

Elementy składowe karty graficznej

Dane Techniczne TH ALPLAST ADS-S25

Zdjęcia i opis stanowisk laboratoryjnych wykorzystywanych w ramach projektu

Co to jest OpenGL? Oprogramowanie i wykorzystanie stacji roboczych. Wykład 5. OpenGL - Achitektura. OpenGL - zalety. olas@icis.pcz.

USB 2.0 DVD MAKER INSTRUKCJA OBSŁUGI. Nr produktu Strona 1 z 6

Bartosz Bazyluk OpenGL Współczesne podejście do programowania grafiki Część II: Programy cieniujące (shadery)

2 099,00 PLN OPIS PRZEDMIOTU AMIGO CORE I7 8X3,7GHZ 8GB 1TB USB3.0 WIN amigopc.pl CENA: CZAS WYSYŁKI: 24H

PROGRAMOWANIE GRAFIKI 2D W ŚRODOWISKU EMBARCADERO RAD STUDIO XE4 Z WYKORZYSTANIEM BIBLIOTEKI DirectX

PROJEKTOWANIE SYSTEMÓW KOMPUTEROWYCH

Problemy programowania gier. mgr Mateusz Rynk

Przegląd metod renderingu czasu rzeczywistego dla fotorealistycznych wizualizacji architektonicznych

Dane Techniczne TH ALPLAST ADS-S25

Vulkan API. Adam Sawicki Reg KNTG Polygon

Szkolenie autoryzowane. MS Administracja i obsługa Windows 7. Strona szkolenia Terminy szkolenia Rejestracja na szkolenie Promocje

Rozdział 2. Programowanie Arduino i kodowanie społecznościowe (29)

SecureDoc Standalone V6.5

INSTRUKCJA INSTALACJI DRUKARKI. (Dla Windows CP-D70DW/D707DW)

Przegląd architektur kart. Sławomir Król

SPECYFIKACJA TECHNICZNA (minimalne parametry techniczne)

Wyświetlanie terenu. Clipmapy geometrii

CARAT Zalecenia systemu

OpenGL oświetlenie i tekstury. OpenGL oświetlenie. Bogdan Kreczmer.

Politechnika Poznańska, Instytut Informatyki, SUM-TWO

Programowanie gier 3D w HTML5. Andrzej P.Urbański Politechnika Poznańska

Zaawansowane i efektywne systemy cząsteczkowe w grach komputerowych.

Surveillance Client. Program kliencki CMS z IP Search/Finder Toolem. Silas Mariusz MERX Nawojowska 88B, Nowy Sącz

SYSTEMY OPERACYJNE WYKŁAD 1 INTEGRACJA ZE SPRZĘTEM

... Załącznik nr 1 do specyfikacji BPM.ZZP /10 Załącznik nr 1 do umowy BPM.ZZP /10 Załącznik do oferty

CENA BRUTTO ADAXPC ADAX ALFA VBS ,63 ADAXPC ADAX ALFA VBX ,87 ADAXPC ADAX ALFA W7PX ,45

Tekla Structures 20 Instalacja

Transkrypt:

Zaawansowane systemy programowania grafiki. Wprowadzenie. Podstawy OpenGL Aleksander Denisiuk Uniwersytet Warmińsko-Mazurski Olsztyn, ul. Słoneczna 54 denisjuk@matman.uwm.edu.pl 7 października 2014 1 / 26

Wprowadzenie. Podstawy OpenGL Najnowsza wersja tego dokumentu dostępna jest pod adresem http://wmii.uwm.edu.pl/~denisjuk/uwm 2 / 26

Poczatek OpenGL 1981: Silicon Graphics Koniec lat 1980: IRIS GL (Integrated Raster Imaging System Graphical Library) proprietarna 1992: OpenGL (Open Graphics Library) otwarta 3 / 26

Elastyczność Brak jekiegokolwiek kodu, sama specyfikacja każdy producent (sprętu jak i oprogramowania) może implemetować na swojej platformie Rozszerzenia (NV_, AGL_) brak standardowego mechanizmu rozszerzeń szególny problem na Windows, gdzie nagłówki OpenGL sa nadal w wersji 1.1 4 / 26

Otwartość 1992: ARB (OpenGL Architecture Review Board) testy zgodności implementacji Wiodacy standard grafiki w czasie rzeczywistym jedyny wieloplatformowy 5 / 26

OpenGL a Windows 1993: Windows NT: rywal Uniksowi w sieci brak biblioteki graficznej decyzja zaimplementować OpenGL Ostrzeżenie KB121282: OpenGL Screen Savers May Degrade Server Performance 1994: Windows NT 3.5, implemntacja OpenGL prowizoryczna brak optymalizacji i przyśpieszenia sprzętowego 6 / 26

DirectX Microsoft: własne 3W API dla gier pod Windows WinG (translacja poleceń do GDI) 1995: Microsoft nabywa RenderMorphics Direct3D: bardzo niewygona implementacja OpenGL 1.1 w Windows 95 oraz NT 4.0 Reality Lab 1996: DirectX DirectDraw DirectInput DirectPlay DirectSound Direct3D 7 / 26

Wojna API Microsoft: OpenGL do grafiki profesjonalnej (CAD). Do programowania gier lepiej nadaje się DirectX 1996: John Carmack (id Software) port Quake na OpenGL dla Windows, porównanie OpenGL a Direct3D 1997: Alex St. John odpowiedź w obronie Direct3D Microsoft: OpenGL jest profesjonala biblioteka i nie będzie wspierana przez zwykłe karty graficzne SGI: Odpowiedź: porównanie OpenGL a Direct3D pod katem inżynierskim, nie marketologowym Direct3D w wersji 5 został porównywalnym z OpenGL 8 / 26

Rozgromienie sterowników Sterowniki implementujace OpenGL na Windows NT zostały oparte o MCD (Mini-Client Driver) Microsoft nie pozwoliła na licencjonowanie MCD na Windows 95 SGI: Installable Client Driver (ICD) Producenci sprzętu: nowe sterowniki Producenci gier: gry pod OpenGL 9 / 26

Ewolucja kart graficznych Koniec lat 1990: opengl standardem 3W grafiki CAD, Quake 2, Unreal, Half-Life Pierwsze dedykowane 3W karty graficzne ATI 3D Rage, S3 ViRGE Voodoo Graphics (3Dfx Interactive) Glide API NVIDIA GeForce 256 GPU (Graphics Processing Unit) T&L (Transform & Lighting) Poczatek 2000: NVIDIA GeForce 2, ATI Radeon 7000 OpenGL, Direct3D 10 / 26

Zmiana paradygmatu Na poczatku lat 2000 wydajność GPU wzrasta wykładniczo CPU nie jest potrzebny do renderowania 3W grafiki w czasie rzeczywistym CPU nawet jest wazkim gardłem w procesie renderowania potrzebne sa nowe metody, żeby obejść CPU 11 / 26

Obiekt bufora Immediate mode: program przekazuje ciag poleceń do GPU Nowa metoda: obiekt bufora tworzony i przechowywany w pamięci GPU OpenGL: VBO (Vertex Buffer Object) Direct3D: Vertex Buffer 12 / 26

Shadery 2000: Microsoft, Direct3D 8.0 vertex shaders pixel shaders Asembler GPU 2003: Direct3D 9.0 High-Level Shader Language (HLSL) 13 / 26

Stagnacja OpenGL Brak wsparcia shaderów Dopiero w 2004: OpenGL 2.0, OpenGL Shading Language (GLSL) 2004 2006: dominacja Direct3D 9.0, zaledwie kilka gier na OpenGL 2005: Xbox 360 ze wsparciem Direct3D 9.0 żadnych wiadomości od ARB 2006: OpenGL 2.1 Direct3D 10.0 (razem z Windows Vista) Zmiana kierunku rozwoju sprzętu: eliminacja immediate mode, ustalonych funkcji co raz bardziej programowalne GPU ARB, SGI: brak odpowiedzi 14 / 26

Nowy OpenGL 2006, SIGGRAPH: zarzadzać rozwojem OpenGL będzie Khronos Group konsorcjum producentów (sprzętu i oprogramowania) rozwój otwartych standardów OpenGL COLLADA 15 / 26

Longs Peak, Mt. Evans Miały zostać opublikowane w 2007: latem oraz w październiku dociagn ać do Direct3D 10.0 wyeliminować immediate mode działać tylko na buforach i shaderach Technical Sub-Groups Longs Peak kompatybilna z ówczesnym sprzętem kompatybilna wstecz ze starym OpenGL Mt. Evans złamie kompatybilność wstecz będzie podstawa dla przyszłości 30 października 2007: trzeba poczekać 16 / 26

OpenGL 3.0 Lipec 2007 Nie było to Longs Peak został immediate mode nie został właczony w specyfikację nowy model obiektowy nie było planów, co właczyć w przyszłe wersje trochę nowych możliwości deprecation model wszystkie metody, zwiazane z immediate mode zostały zaznaczone jako przestarzałe pełna kompatybilność ze starymi metodami Liczne protesty społeczności Programiści Windows zaczęli porzucać OpenGL na rzecz Direct3D Czyżby wojna API została przegrana? 17 / 26

Ciag dalszy Okazało się, że nie jest tak żle :-) OpenGL 3.0 miał cechy, których nie było w Direct3D 10.0: dostęp do nowych funkcji w Windows XP Marzec 2009: OpenGL 3.1 eliminacja immediate mode Czerwiec 2009: OpenGL 3.2 Geometry Shaders dorównanie z Direct3D 10.0 18 / 26

Kontekst Context obiekt pośredniczy pomiędzy programem a urzadzeniem OpenGL. Przy tworzeniu kontekstu: główny numer wersji drugorzędny numer wersji opcjonalne parametry Każda wersja OpenGL (powyżej 3.0) ma część funkcji deprecated, które moga zostać usunięte w następnych wersjach Core Profile flag Compatibility Profile flag Forward Compatible flag Debug flag 19 / 26

OpenGL 4.0 11 marca 2010 OpenGL 4.0 współczene GPU Direct3D 11 Parkietaż (Tessellation) 64-bitowa dokładność obliczeń OpenGL 3.3 kompatybilna ze starym sprzętem jak najwięcej możliwości opengl 4.0 Będziemy używać wyłacznie opengl 4.4, Core profile w szególności, żadnych glbegin, glend, glvertex3f, glcolor3f 20 / 26

OpenGL 4.1 4.5 26 czerwca 2010 OpenGL 4.1 nowa wersja GLSL zupełna zgodność z OpenGL ES 8 sierpnia 2011 OpenGL 4.2 6 sierpnia 2012 OpenGL 4.3 22 lipca 2013 OpenGL 4.4 11 sierpnia 2014 OpenGL 4.5 OpenGL NG 21 / 26

OpenGL Wieloplatformowość Windows, Linux, MacOS Windows, Linux, MacOS iphone, Android OpenGL ES WebGL 22 / 26

Wymagania C, C++ Macierze, wektory, geometria 23 / 26

Wymagania sprzętowe NVIDIA GPU GeForce GTX 400 AMD/ATI GPU Radeon HD 5000 najnowsze sterowniki 24 / 26

Biblioteki wspomagajace C/C++ FreeGLUT, GLEW My: Qt+QtOpenGL Inne Opcje: Python+PyOpenGL Java+JOGL 25 / 26

Wymagania programowe Qt Creator 26 / 26