Oprogramowanie i wykorzystanie stacji roboczych. Wykład 5

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

Janusz Ganczarski. OpenGL Pierwszy program

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 6

Wprowadzenie do programowania z wykorzystaniem biblioteki OpenGL. Dorota Smorawa

Temat: Wprowadzenie do OpenGL i GLUT

Temat: Transformacje 3D

3 Przygotował: mgr inż. Maciej Lasota

Specyfikacja OpenGL Podstawy programowania grafiki komputerowej*

1 Wstęp teoretyczny. Temat: Manipulowanie przestrzenią. Grafika komputerowa 3D. Instrukcja laboratoryjna Układ współrzędnych

2 Przygotował: mgr inż. Maciej Lasota

Zatem standardowe rysowanie prymitywów wygląda następująco:

OpenGL - maszyna stanu. Oprogramowanie i wykorzystanie stacji roboczych. Wykład 7. Grupy atrybutów. Zmienne stanu.

GRAFIKA CZASU RZECZYWISTEGO Wprowadzenie do OpenGL

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

OpenGL i Qt. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechnika Wrocławska

Oświetlenie w OpenGL. Oprogramowanie i wykorzystanie stacji roboczych. Wykład 8. Światło otaczajace. Światło rozproszone.

Elementarne obiekty geometryczne, bufory. Dorota Smorawa

GRAFIKA KOMPUTEROWA 7: Kolory i cieniowanie

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 4

Wizualizacja 3D. dr inż. Marcin Gabryel

The Graphics View Framework. Oprogramowanie i wykorzystanie stacji roboczych. Wykład 5. he Graphics View Framework - architektura

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

Programowanie Procesorów Graficznych

Janusz Ganczarski. OpenGL Definiowanie sceny 3D

Plan wykładu. Akcelerator 3D Potok graficzny

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

OpenGL. Silicon Graphics (IRIS GL stacje graficzne)

dr inż. Jacek Dąbrowski, KSG

Rzutowanie DOROTA SMORAWA

Bufor koloru cd. Czyszczenie bufora koloru glclearcolor( )

Prosty program- cpp. #include <GL/glut.h>

Laboratorium 1. Część I. Podstawy biblioteki graficznej OpenGL.

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

Teksturowanie. Oprogramowanie i wykorzystanie stacji roboczych. Wykład 10. Tekstury. Proces nakładania tekstury.

glwindowpos2d void DrawString (GLint x, GLint y, char *string) { glwindowpos2i (x,y); int len = strlen (string); for (int i = 0; i < len; i++)

8 Przygotował: mgr inż. Maciej Lasota

Przekształcenia geometryczne. Dorota Smorawa

0. OpenGL ma układ współrzędnych taki, że oś y jest skierowana (względem monitora) a) w dół b) w górę c) w lewo d) w prawo e) w kierunku do

OpenGL Zaawansowana grafika komputerowa

Grafika trójwymiarowa

Grafika komputerowa INSTRUKCJA DO LABORATORIUM 2: operacje przestrzenne oraz obsługa klawiatury i myszki

System graficzny. Potok graficzny 3D. Scena 3D Zbiór trójwymiarowych danych wejściowych wykorzystywanych do wygenerowania obrazu wyjściowego 2D.

Materiały. Dorota Smorawa

Wprowadzenie do QT OpenGL

Teksturowanie (ang. texture mapping)

Mechanizm sygnałów i slotów. Oprogramowanie i wykorzystanie stacji roboczych. Wykład 4. Sygnały i sloty - definicja klasy

grafika 2D i animacja obsługa rotacji i elementy 3D-OpenGL w Androidzie

// Potrzebne do memset oraz memcpy, czyli kopiowania bloków

Podstawy Processingu. Diana Domańska. Uniwersytet Śląski

Grafika Komputerowa Wykład 5. Potok Renderowania Oświetlenie. mgr inż. Michał Chwesiuk 1/38

Programowanie, część III

Wprowadzenie. Artur Staszczyk Bartłomiej Filipek

Jak wybrać akcelerator 3D dedykowany aplikacjom typu MCAD?

Wizualne systemy programowania. Wykład 11 Grafika. dr Artur Bartoszewski -Wizualne systemy programowania, sem. III- WYKŁAD

KARTA KURSU. Grafika komputerowa

Zaawansowany kurs języka Python

Druga aplikacja Prymitywy, alpha blending, obracanie bitmap oraz mały zestaw przydatnych funkcji wyświetlających własnej roboty.

Zaawansowane systemy programowania grafiki. Wprowadzenie. Podstawy OpenGL

Systemy wirtualnej rzeczywistości. Podstawy grafiki 3D

Grafika komputerowa i wizualizacja

1. Prymitywy graficzne

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

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

Efekt lustra 3D w OpenGL z wykorzystaniem bufora szablonowego (stencil buffer)

Grafika Komputerowa, Informatyka, I Rok

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

Wstęp Podstawy Pierwszy program Definiowanie sceny 3D Przekształcenia geometryczne... 47

PRZEWODNIK PO PRZEDMIOCIE

Tekstury. Dorota Smorawa

Programowanie Równoległe wykład, CUDA, przykłady praktyczne 1. Maciej Matyka Instytut Fizyki Teoretycznej

Studium podyplomowe. Programowanie w OpenGL. Michał Turek, AGH Kraków

Wizualizacja danych sensorycznych Projekt Tworzenie grafiki stereoskopowej. Marek Gulanowski

Grafika Komputerowa Wykład 4. Synteza grafiki 3D. mgr inż. Michał Chwesiuk 1/30

OpenGL - tekstury Mapowanie tekstur

Wprowadzenie do klas w C++ oraz biblioteki opengl

Animowana grafika 3D. Opracowanie: J. Kęsik.

Rysowanie punktów na powierzchni graficznej

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

Grafika 3D OpenGL część II

1 Temat: Vertex Shader

Przyspieszanie sprzętowe

OpenGL - charakterystyka

Laboratorium grafiki komputerowej i animacji. Ćwiczenie V - Biblioteka OpenGL - oświetlenie sceny

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

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Qt sygnały i designer

Wykład 12. Wprowadzenie do malarstwa, str. 1 OpenGL Open Graphics Library. OpenGL składa się z

Mieszanie kolorów. Dorota Smorawa

Mobilne aplikacje multimedialne. OpenGL

Biblioteka OpenGL: Wprowadzenie

Julia 4D - raytracing

WIZUALIZACJA INFORMACJI TEKSTOWEJ WSTĘP DO HTML 5 CANVAS

GRAFIKA KOMPUTEROWA 10: Antyaliasing

OpenGL przezroczystość

Bartłomiej Filipek

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

Struktury, unie, formatowanie, wskaźniki

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

Zdalne wywołanie metod - koncepcja. Oprogramowanie systemów równoległych i rozproszonych Wykład 7. Rodzaje obiektów. Odniesienie do obiektu

Transkrypt:

Wykład 5 p. 1/? Oprogramowanie i wykorzystanie stacji roboczych Wykład 5 Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska

Wykład 5 p. 2/? Co to jest OpenGL? OpenGL (Open Graphics Library) jest niskopoziomowa biblioteka graficzna (API - programowy interfes sprzętu graficzengo) służac a do tworzenia grafiki 2D i 3D. Obsługiwana jest przez wszystkie liczace się systemy operacyjne oraz większość procesorów graficznych (kart graficznych). Pierwsza wersja biblioteki OpenGL powstała w 1992 roku na bazie języka Iris GL opracowanego przez firmę Silicon Graphics Inc. (SGI).

Wykład 5 p. 3/? OpenGL - Achitektura Aplikacja odwołuje się przez funkcje API OpenGL bezpośrednio do karty graficznej (z pominięciem systemu operacyjnego). Implementacja software owa - poszczególne funkcje moga być wykonywane przez CPU w przypadku, gdy procesor graficzny ich nie wspiera.

Wykład 5 p. 4/? OpenGL - zalety możliwość zastosowania w aplikacjach 2D i 3D, szybkość działania - wykorzystanie akceleracji sprzętowej, wysoka jakość wizualna utworzonych aplikacji, standard przemysłowy - OpenGL Architecture Review Board (ATI, NVIDIA, SGI, 3Dlabs, Apple, Intel, IBM, Sun), Khronos Group, wiarygodność i przenośność (OpenGL jest niezależna od systemu operacyjnego), ciagły rozwój - aktuala wersja jest 3.0, łatwość użycia, rozszerzalność (OpenGL extensions).

Wykład 5 p. 5/? OpenGL - Zastosowanie telewizja, kino, przemysł CAD/CAM/CAE, rozrywka (gry i programy multimedialne), medycyna pokazowa (trójwymiarowe modele), wirtualna rzeczywistość, urzadzenia mobilne (OpenGL ES),...

Wykład 5 p. 6/? OpenGL - Literatura www.opengl.org R. Wright, M. Sweet. OpenGL - księga eksperta, Wydawnictwo Helion, Warszawa 1999. A. Orłowski. OpenGL. Leksykon kieszonkowy, Wydawnictwo Helion, 2005. OpenGL Reference Manual - http://ask.ii.uib.no/ebt-bin/nphdweb/dynaweb/sgi_developer/opengl_rm OpenGL Programming Guide - http://ask.ii.uib.no/ebt-bin/nphdweb/dynaweb/sgi_developer/opengl_pg http://nehe.gamedev.net man pages.

Wykład 5 p. 7/? Przykładowe możliwości OpenGL (I) Rysowanie prymitywów - punkt, linia, trójkat, wielokat. Gouraud shading (cieniowanie Gouraud a) - cieniowanie na podstawie interpolacji kolorów ze wszystkich wierzchołków wielokata.

Wykład 5 p. 8/? Przykładowe możliwości OpenGL (II) Transformacje obiektów - możliwość obrotu, zmiany rozmiaru, przesunięcia obiektów. Texture mapping - Proces dodawania obrazu do prymitywnych elementów. Technika ta ma na celu podwyższenie realizmu obrazu.

Wykład 5 p. 9/? Przykładowe możliwości OpenGL (III) Z-buffering - Z-bufor jest struktura, w której przechowywane sa współrzędne z każdego piksela. pozwala na ułożenie obiektów w kolejności od najdalszych do tych najbliższych położeniu obserwatora. Double buffering (podwójne buforowanie) - używany do uzyskania płynnej animacji. Każda kolejna klatka animacji obiektu w ruchu konstruowana jest w ukrytym buforze i następnie wyświetlana. Pozwala to na wyświetlenie kompletnych już obrazów.

Wykład 5 p. 10/? Przykładowe możliwości OpenGL (IV) Alpha blending (efekt przeźroczystości pikseli) - Służy do uzyskania przeźroczystości. Można uzyskać obiekt od całkowicie przeźroczystego (poprzez różne jej stopnie) do całkowicie nieprzeźroczystego. Czcionki 2D i 3D

Wykład 5 p. 11/? Przykładowe możliwości OpenGL (V) Accumulation buffer Bufor, w którym wiele zrenderowanych ramek może zostać złożonych w celu otrzymania jednego połaczonego obrazu. Używany też do efektów takich jak motion blur (rozmycie) i anti-aliasing (uśrednianie kolorów krawędzi obiektu z tłem).

Wykład 5 p. 12/? Przykładowe możliwości OpenGL (VI) Anti-aliasing Metoda renderowania używana do wygładzania linii i krzywych. Technika polega na uśrednianiu koloru przylegajacego do linii. W efekcie uzyskuje się wrażenie miękkości (krawędzie nie sa postrzępione). Powierzchnie Beziera

OpenGL - warstwy API Wykład 5 p. 13/?

Struktura aplikacji Wykład 5 p. 14/?

Od modelu do widoku Wykład 5 p. 15/?

Prymitywy Wykład 5 p. 16/?

Transformacje obiektów Wykład 5 p. 17/?

Obcinanie Wykład 5 p. 18/?

Rzutowanie Wykład 5 p. 19/?

Rasteryzacja Wykład 5 p. 20/?

Wykład 5 p. 21/? Konwencje nazw funkcji Wszystkie funkcje OpenGL maja następujacy format: <Przedrostek biblioteki><rdzeń polecenia> <Opcjonalnie liczba argumentów><opcjonalnie typ argumentów>

Wykład 5 p. 22/? Konwencje nazw - typy w OpenGL Suffix Data Type Typical Corresponding C-Language Type OpenGL Type Definition b 8-bit integer signed char GLbyte s 16-bit integer short GLshort i 32-bit integer int or long GLint, GLsizei f 32-bit floating-point float GLfloat, GLclampf d 64-bit floating-point double GLdouble, GLclampd ub 8-bit unsigned integer unsigned char GLubyte, GLboolean us 16-bit unsigned integer unsigned short GLushort ui 32-bit unsigned integer unsigned int or unsigned long GLuint, GLenum, GLbitfield

Wykład 5 p. 23/? Konwencje nazw - przykłady Wszystkie poniższe wywołania funkcji określaja punkt o współrzędnych (1,3): glvertex2i(1, 3); glvertex2f(1.0, 3.0); GLfloat coords[] = {1.0, 3.0}; glvertex2fv(coords);

Wykład 5 p. 24/? Układ współrzędnych W OpenGL oś z jest zwrócona w kierunku obserwatora.

Wykład 5 p. 25/? OpenGL i Qt Biblioteka Qt może być wykorzystana do wyświetlania grafiki w OpenGL przy wykorzystaniu modułu QGL. Do wyświetlenia sceny w OpenGL w oknie Qt służy klasa QGLWidget. Tworzenie grafiki w takim oknie odbywa się poprzez wywołania funkcji z OpenGL, a nie wykorzystaniu klasy QPainter. Aby renderować scenę OpenGL należy utworzyć klasę dziedziczac a po klasie QGLWidget i zaimplementować metody: paintgl() resizegl() initializegl()

Wykład 5 p. 26/? Rzutowanie W OpenGL do określenia rzutu równoległego służy funkcja glortho. glortho(gldouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near, GLdouble far);

Wykład 5 p. 27/? Definiowanie widoku Do ustalenia obszaru okna (widok), przeznaczonego do wykorzystania przez OpenGL służy funkcja glviewport glviewport(glint x, GLint y, GLsizei width, GLsizei height);

Wykład 5 p. 28/? Kolory w OpenGL Kolory w OpenGL sa zadawane w trybie RGB lub RGBA (red, green, blue, alpha)

Wykład 5 p. 29/? Kolor tła Kolor tła może być ustawiony na dwa sposoby: poprzez funkcję z biblioteki OpenGL: void glclearcolor(glclampf red, GLclampf green, GLclampf blue, GLclampf alpha); lub przy wykorzystaniu metody qglcolor z klasy QGLWidget: void QGLWidget::qglColor (const QColor &c) const;

Wykład 5 p. 30/? paintgl - bufory W OpenGL w skład bufora ramki (pamięci obrazu) wchodza następujace bufory: bufor koloru (color buffer), bufor głębokości (depth buffer), bufor szblonowy (stencil buffer), bufor akumulacyjny (accumulation buffer). Przed przystapieniem do tworzenia sceny wykorzystywane bufory musza zostać wyczyszczone. Do tego celu służy funkcja glclear. Wyczyszczenie bufora kolorów (GL_COLOR_BUFFER_BIT): glclear(gl_color_buffer_bit);

Wykład 5 p. 31/? Macierze w OpenGL Biblioteka OpenGL do wykonywania operacji na punktach wykorzystuje macierze. Macierze przechowywane sa w stosach macierzy. Podstawowymi stosami macierzy w OpenGL sa: GL_MODELVIEW - stos macierzy widoku, GL_PROJECTION - stos macierzy rzutowania. Zmiana aktualnego stosu macierzy: glmatrixmode(glenum mode); Do zresetowania aktualnej macierzy służy funkcja: glloadidentity();

Wykład 5 p. 32/? Dodawanie obiektów do sceny Najpierw ustawia się jakiego typu prymitywy będa wykorzystywane do tworzenia bardziej złożonych obiektów, a następnie zadaje się ich poszczególne wierzchołki glbegin(gl_lines); glvertex3f(-1.0f, 0.0f, 0.0f); glvertex3f(1.0f, 0.0f, 0.0f); glvertex3f(-1.0f, 1.0f, 0.0f); glvertex3f(1.0f, 1.0f, 0.0f); glend() glbegin(gl_triangles); glcolor3f(1.0f, 0.0f, 0.0f); glvertex3f(-0.5f, 0.0f, 0.0f); glcolor3f(0.0f, 1.0f, 0.0f); glvertex3f(0.0f, 0.0f, 0.0f); glcolor3f(0.0f, 0.0f, 1.0f); glvertex3f(0.0f, 0.5f, 0.0f); glend()

Prymitywy Wykład 5 p. 33/?

Wykład 5 p. 34/? OpenGL i Qt - Przykład I #include <QGLWidget> class MyGLWidget : public QGLWidget { public: MyGLWidget(QWidget* parent = NULL); protected: void initializegl(); void paintgl(); void resizegl(int w, int h); };

Wykład 5 p. 35/? OpenGL i Qt - Przykład II void MyGLWidget::initializeGL() { qglclearcolor(qt::black); } void MyGLWidget::resizeGL(int w, int h) { glviewport(0, 0, w, h); glmatrixmode(gl_projection); glloadidentity(); glortho(-3.0f, 3.0f, -3.0f, 3.0f, 1.0, -1.0); glmatrixmode(gl_modelview); }

Wykład 5 p. 36/? OpenGL i Qt - Przykład III void MyGLWidget::paintGL() { glclear(gl_color_buffer_bit); glloadidentity(); } glbegin(gl_lines); glvertex3f(-2.0, -2.0, 0.0); glvertex3f(2.0, 2.0, 0.0); glend();

Wykład 5 p. 37/? OpenGL i Qt - Przykład IV int main(int argc, char **argv) { QApplication a(argc, argv); if (!QGLFormat::hasOpenGL()) { qwarning("this system has no OpenGL support. Exiting."); return -1; } } MyGLWidget widget; widget.resize(150, 150); widget.show(); return a.exec();

Wykład 5 p. 38/? Ustawienie koloru obiektów Do ustawiania aktualnego koloru służy funkcja glcolor* void glcolor3{b s i f d ub us ui} (TYPE r, TYPE g, TYPE b); void glcolor4{b s i f d ub us ui} (TYPE r, TYPE g, TYPE b, TYPE a); void glcolor3{b s i f d ub us ui}v (const TYPE *v); void glcolor4{b s i f d ub us ui}v (const TYPE *v); Do rysowania elementu wykorzystywany jest aktualnie ustawiony kolor: ustaw_kolor(red); rysuj_obiekt(a); rysuj_obiekt(b); ustaw_kolor(green); ustaw_kolor(blue); rysuj_obiekt(c);

Wykład 5 p. 39/? Kolory wielokatów Wypełnianie wielokata jednolitym kolorem, zgodnym z kolorem aktualnym w momencie podawania ostatniego wierzchołka: glshademodel(gl_flat); Płynne przejście pomiędzy kolorami wierzchołków poprzez interpolację kolorów pośrednich: glshademodel(gl_smooth);