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

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

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

Janusz Ganczarski. OpenGL Pierwszy program

2 Przygotował: mgr inż. Maciej Lasota

Janusz Ganczarski. OpenGL Definiowanie sceny 3D

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

Temat: Wprowadzenie do OpenGL i GLUT

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

Temat: Transformacje 3D

Przekształcenia geometryczne. Dorota Smorawa

Wprowadzenie do programowania z wykorzystaniem biblioteki OpenGL. Dorota Smorawa

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

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

Wprowadzenie do rysowania w 3D. Praca w środowisku 3D

GRAFIKA CZASU RZECZYWISTEGO Wprowadzenie do OpenGL

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

Trójwymiarowa grafika komputerowa rzutowanie

Rzutowanie DOROTA SMORAWA

Rysowanie punktów na powierzchni graficznej

narzędzie Linia. 2. W polu koloru kliknij kolor, którego chcesz użyć. 3. Aby coś narysować, przeciągnij wskaźnikiem w obszarze rysowania.

1. Prymitywy graficzne

Programowanie Procesorów Graficznych

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

Ćwiczenia nr 4. TEMATYKA: Rzutowanie

Ćwiczenie nr 5 Zautomatyzowane tworzenie dokumentacji

Programowanie: grafika w SciLab Slajd 1. Programowanie: grafika w SciLab

1. Wybierz polecenie rysowania linii, np. poprzez kliknięcie ikony W wierszu poleceń pojawi się pytanie o punkt początkowy rysowanej linii:

Techniki wstawiania tabel

Maskowanie i selekcja


Plan wykładu. Wykład 3. Rzutowanie prostokątne, widoki, przekroje, kłady. Rzutowanie prostokątne - geneza. Rzutowanie prostokątne - geneza

Płaszczyzny, Obrót, Szyk

AUTOCAD teoria i zadania z podstaw rysowania Rysowanie linii, prostej, półprostej, punktu, trasy, polilinii. Zadania geodezyjne.

INSTYTUT INFORMATYKI STOSOWANEJ MODELOWANIE CZĘŚCI Z WYKORZYSTANIEM PROGRAMU SOLID EDGE

4. Rysowanie krzywych

Architektura interfejsu użytkownika

Tworzenie dokumentacji 2D

Cykl lekcji informatyki w klasie IV szkoły podstawowej. Wstęp

Podstawy grafiki komputerowej

KGGiBM GRAFIKA INŻYNIERSKA Rok III, sem. VI, sem IV SN WILiŚ Rok akademicki 2011/2012

GRAFIKA CZASU RZECZYWISTEGO Podstawy syntezy grafiki 3D i transformacji geometrycznych

WASM AppInventor Lab 3. Rysowanie i animacja po kanwie PODSTAWY PRACY Z KANWAMI

Politechnika Warszawska Wydział Mechatroniki Instytut Automatyki i Robotyki

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

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

Bartosz Bazyluk SYNTEZA GRAFIKI 3D Grafika realistyczna i czasu rzeczywistego. Pojęcie sceny i kamery. Grafika Komputerowa, Informatyka, I Rok

Grafika 3D OpenGL część II

Grafika i komunikacja człowiek komputer Laboratorium. Część 2: Graphics

aksonometrie trójosiowe odmierzalne odwzorowania na płaszczyźnie

OpenGL oświetlenie. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechnika Wrocławska

Praktyka programowania projekt

RZUTOWANIE PROSTOKĄTNE

Języki formalne i automaty Ćwiczenia 5

3 Przygotował: mgr inż. Maciej Lasota

OpenGL przezroczystość

Zadanie 1. Ściana. 1. Potrzebne zmienne w dołączonym do zadania kodzie źródłowym

Grafika komputerowa Wstęp do OpenGL

GRAFIKA KOMPUTEROWA. Plan wykładu. 1. Początki grafiki komputerowej. 2. Grafika komputerowa a dziedziny pokrewne. 3. Omówienie programu przedmiotu

Wstęp Pierwsze kroki Pierwszy rysunek Podstawowe obiekty Współrzędne punktów Oglądanie rysunku...

Tworzenie nowego rysunku Bezpośrednio po uruchomieniu programu zostanie otwarte okno kreatora Nowego Rysunku.

Grafika Komputerowa Materiały Laboratoryjne

CorelDraw - Edytor grafiki wektorowej

RYSUNEK TECHNICZNY I GEOMETRIA WYKREŚLNA INSTRUKCJA DOM Z DRABINĄ I KOMINEM W 2D

AUTOCAD MIERZENIE I PODZIAŁ

O czym należy pamiętać?

Rysowanie precyzyjne. Polecenie:

Simba 3D LOGO. Cele zajęć: - Poznanie zasad i sposobów tworzenia procedur z parametrami. - Poznanie zasad wywoływania procedur z parametrami.

WIDOKI I PRZEKROJE PRZEDMIOTÓW LINIE PRZENIKANIA BRYŁ

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

Animacje z zastosowaniem suwaka i przycisku

DARMOWA PRZEGLĄDARKA MODELI IFC

Wybrane aspekty teorii grafiki komputerowej - dążenie do wizualnego realizmu. Mirosław Głowacki

WPROWADZENIE DO GRAFIKI KOMPUTEROWEJ

Technologie Informacyjne Mechatronika 2012/2013 Turtle

Wybrane aspekty teorii grafiki komputerowej - dążenie do wizualnego realizmu. Mirosław Głowacki

Zaawansowany kurs języka Python

WYKŁAD 3 WYPEŁNIANIE OBSZARÓW. Plan wykładu: 1. Wypełnianie wieloboku

Przykłady zastosowania zaawansowanych operacji

Rys.1. Uaktywnianie pasków narzędzi. żądanych pasków narzędziowych. a) Modelowanie części: (standardowo widoczny po prawej stronie Przeglądarki MDT)

Projektowanie graficzne. Wykład 2. Open Office Draw

Rys. 1. Rozpoczynamy rysunek pojedynczej części

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

Wprowadzenie do klas w C++ oraz biblioteki opengl

Dodawanie grafiki i obiektów

Projekt połowicznej, prostej endoprotezy stawu biodrowego w programie SOLIDWorks.

WYKŁAD 2 Znormalizowane elementy rysunku technicznego. Przekroje.

Kurs Adobe Photoshop Elements 11

Ćwiczenie nr 5 i 6 Przygotowanie dokumentacji technicznej dla brył

Skalowanie i ustawianie arkuszy/układów wydruku w AutoCAD autor: M. Motylewicz, 2012

AutoCAD 1. Otwieranie aplikacji AutoCAD AutoCAD 1

rysunkowej Rys. 1. Widok nowego arkusza rysunku z przeglądarką obiektów i wywołanym poleceniem edycja arkusza


Wybrane aspekty teorii grafiki komputerowej - dążenie do wizualnego realizmu. Mirosław Głowacki

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

Cel ćwiczenia: Celem ćwiczenia jest nabranie wprawy w rysowaniu kół i okręgów o zadanych rozmiarach.

Prostokąt. AutoCAD pozwala na szybkie rysowanie figur o czterech bokach prostokątów. Do tego celu służy funkcja Prostokąt. Funkcję tą można wywołać:

C Biblioteka G2. C.1 Koncepcja biblioteki G2.

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 6

Autokształtów Autokształt AUTOKSZTAŁTY Wstaw Obraz Autokształty Autokształty GDYNIA 2009

Transkrypt:

Wykład 10. Wprowadzene do malarstwa, str. 1 OpenGL Open Graphics Library OpenGL składa się z teoretycznego modelu grafiki 3D, zestawu typów i funkcji obsługujących różne cechy tego modelu. Funkcje OpenGL dostępne są z różnych języków na wielu platformach.

Wykład 10. Wprowadzene do malarstwa, str. 1 OpenGL Open Graphics Library OpenGL składa się z teoretycznego modelu grafiki 3D, zestawu typów i funkcji obsługujących różne cechy tego modelu. WjęzykuC: Funkcje OpenGL dostępne są z różnych języków na wielu platformach. pliki nagłówkowe: #include <GL/glut.h>

Wykład 10. Wprowadzene do malarstwa, str. 1 OpenGL Open Graphics Library OpenGL składa się z teoretycznego modelu grafiki 3D, zestawu typów i funkcji obsługujących różne cechy tego modelu. WjęzykuC: Funkcje OpenGL dostępne są z różnych języków na wielu platformach. pliki nagłówkowe: #include <GL/glut.h> #include <math.h> jeśli liczymy obroty, rzuty, itp.

Wykład 10. Wprowadzene do malarstwa, str. 1 OpenGL Open Graphics Library OpenGL składa się z teoretycznego modelu grafiki 3D, zestawu typów i funkcji obsługujących różne cechy tego modelu. WjęzykuC: Funkcje OpenGL dostępne są z różnych języków na wielu platformach. pliki nagłówkowe: #include <GL/glut.h> #include <math.h> jeśli liczymy obroty, rzuty, itp. biblioteki do wspólnej kompilacji: gcc-lgl-lglu-lglut-lm...

Wykład 10. Wprowadzene do malarstwa, str. 2 OpenGL Open Graphics Library Typowy Makefile: # nazwa programu: PROG = wprawki # biblioteki: LIBS=-lGL-lGLU-lglut-lm $(PROG):$(PROG).c gcc-wall-std=c99 $(PROG).c-o $(PROG) $(LIBS) usun: rm-f$(prog)*

Sztalugi i płótno Wykład 10. Wprowadzene do malarstwa, str. 3

Sztalugi i płótno Wykład 10. Wprowadzene do malarstwa, str. 3 Program główny ustala początkowy rozmiar okna: glutinitwindowsize(szerokość, wysokość);

Sztalugi i płótno Wykład 10. Wprowadzene do malarstwa, str. 3 Program główny ustala początkowy rozmiar okna: glutinitwindowsize(szerokość, wysokość); ustala początkową pozycję okna na ekranie: glutinitwindowposition(od lewej, od góry);

Sztalugi i płótno Wykład 10. Wprowadzene do malarstwa, str. 3 Program główny ustala początkowy rozmiar okna: glutinitwindowsize(szerokość, wysokość); ustala początkową pozycję okna na ekranie: glutinitwindowposition(od lewej, od góry); tworzy okno: glutcreatewindow(nazwa na ramce);

Sztalugi i płótno Wykład 10. Wprowadzene do malarstwa, str. 3 Program główny ustala początkowy rozmiar okna: glutinitwindowsize(szerokość, wysokość); ustala początkową pozycję okna na ekranie: glutinitwindowposition(od lewej, od góry); tworzy okno: glutcreatewindow(nazwa na ramce); ustalakolortła:glclearcolor(r,g,b,α);

Sztalugi i płótno Wykład 10. Wprowadzene do malarstwa, str. 3 Program główny ustala początkowy rozmiar okna: glutinitwindowsize(szerokość, wysokość); ustala początkową pozycję okna na ekranie: glutinitwindowposition(od lewej, od góry); tworzy okno: glutcreatewindow(nazwa na ramce); ustalakolortła:glclearcolor(r,g,b,α); wywołuje funkcję użytkownika odwzorowującą scenę w okno i przekazuje jej rozmiary okna: glutreshapefunc(funkcja);

Sztalugi i płótno Wykład 10. Wprowadzene do malarstwa, str. 3 Program główny ustala początkowy rozmiar okna: glutinitwindowsize(szerokość, wysokość); ustala początkową pozycję okna na ekranie: glutinitwindowposition(od lewej, od góry); tworzy okno: glutcreatewindow(nazwa na ramce); ustalakolortła:glclearcolor(r,g,b,α); wywołuje funkcję użytkownika odwzorowującą scenę w okno i przekazuje jej rozmiary okna: glutreshapefunc(funkcja); wywołuje funkcję użytkownika rysującą scenę: glutdisplayfunc(funkcja);

Sztalugi i płótno Wykład 10. Wprowadzene do malarstwa, str. 3 Program główny ustala początkowy rozmiar okna: glutinitwindowsize(szerokość, wysokość); ustala początkową pozycję okna na ekranie: glutinitwindowposition(od lewej, od góry); tworzy okno: glutcreatewindow(nazwa na ramce); ustalakolortła:glclearcolor(r,g,b,α); wywołuje funkcję użytkownika odwzorowującą scenę w okno i przekazuje jej rozmiary okna: glutreshapefunc(funkcja); wywołuje funkcję użytkownika rysującą scenę: glutdisplayfunc(funkcja); uruchamia rysowanie: glutmainloop();

Sztalugi i płótno Wykład 10. Wprowadzene do malarstwa, str. 4

Sztalugi i płótno Wykład 10. Wprowadzene do malarstwa, str. 4 glutinitwindowsize(400, 300); 300 400

Sztalugi i płótno Wykład 10. Wprowadzene do malarstwa, str. 4 glutinitwindowsize(400, 300); glutinitwindowposition(200, 250); 200 250 300 400

Sztalugi i płótno Wykład 10. Wprowadzene do malarstwa, str. 4 glutinitwindowsize(400, 300); glutinitwindowposition(200, 250); glutcreatewindow("wprawki"); 200 250 wprawki 300 400

Sztalugi i płótno Wykład 10. Wprowadzene do malarstwa, str. 4 glutinitwindowsize(400, 300); glutinitwindowposition(200, 250); glutcreatewindow("wprawki"); glclearcolor(zolty, 0.0); 200 250 wprawki 300 400

Sztalugi i płótno Wykład 10. Wprowadzene do malarstwa, str. 4 glutinitwindowsize(400, 300); glutinitwindowposition(200, 250); glutcreatewindow("wprawki"); glclearcolor(zolty, 0.0); 200 250 wprawki Żeby okno się pojawiło, konieczna jest jeszcze komenda glutmainloop(); (por. program wprawki0.c). 300 400

Kadrowanie i głębia ostrości Wykład 10. Wprowadzene do malarstwa, str. 5 Funkcja wywołana w glutreshapefunc ustala geometrię. Patrzymy od strony dodatniej półosi z. Funkcja glortho(-20, 20,-15, 15,-5, 5); wyznacza prostopadłościan, którego zawartość zostanie przedstawiona: y x z

Kadrowanie i głębia ostrości Wykład 10. Wprowadzene do malarstwa, str. 5 Funkcja wywołana w glutreshapefunc ustala geometrię. Patrzymy od strony dodatniej półosi z. Funkcja glortho(-20, 20,-15, 15,-5, 5); wyznacza prostopadłościan, którego zawartość zostanie przedstawiona: y x z...

Kadrowanie i głębia ostrości Wykład 10. Wprowadzene do malarstwa, str. 5 Funkcja wywołana w glutreshapefunc ustala geometrię. Patrzymy od strony dodatniej półosi z. Funkcja glortho(-20, 20,-15, 15,-5, 5); wyznacza prostopadłościan, którego zawartość zostanie przedstawiona: y x z...

Kadrowanie i głębia ostrości Wykład 10. Wprowadzene do malarstwa, str. 5 Funkcja wywołana w glutreshapefunc ustala geometrię. Patrzymy od strony dodatniej półosi z. Funkcja glortho(-20, 20,-15, 15,-5, 5); wyznacza prostopadłościan, którego zawartość zostanie przedstawiona: y x [ 20..20] x z...

Kadrowanie i głębia ostrości Wykład 10. Wprowadzene do malarstwa, str. 5 Funkcja wywołana w glutreshapefunc ustala geometrię. Patrzymy od strony dodatniej półosi z. Funkcja glortho(-20, 20,-15, 15,-5, 5); wyznacza prostopadłościan, którego zawartość zostanie przedstawiona: y x [ 20..20] y [ 15..15] x z...

Kadrowanie i głębia ostrości Wykład 10. Wprowadzene do malarstwa, str. 5 Funkcja wywołana w glutreshapefunc ustala geometrię. Patrzymy od strony dodatniej półosi z. Funkcja glortho(-20, 20,-15, 15,-5, 5); wyznacza prostopadłościan, którego zawartość zostanie przedstawiona: y x [ 20..20] y [ 15..15] x z [ 5..5] z...

Kadrowanie i głębia ostrości Wykład 10. Wprowadzene do malarstwa, str. 5 Funkcja wywołana w glutreshapefunc ustala geometrię. Patrzymy od strony dodatniej półosi z. Funkcja glortho(-20, 20,-15, 15,-5, 5); wyznacza prostopadłościan, którego zawartość zostanie przedstawiona: y x [ 20..20] y [ 15..15] x z [ 5..5] z...

Kadrowanie i głębia ostrości Wykład 10. Wprowadzene do malarstwa, str. 6 O rzutowaniach

Kadrowanie i głębia ostrości Wykład 10. Wprowadzene do malarstwa, str. 6 O rzutowaniach HORYZONT rzut zbieżny perspektywiczny

Kadrowanie i głębia ostrości Wykład 10. Wprowadzene do malarstwa, str. 6 O rzutowaniach HORYZONT rzut zbieżny perspektywiczny rzut równoległy

Kadrowanie i głębia ostrości Wykład 10. Wprowadzene do malarstwa, str. 6 O rzutowaniach HORYZONT rzut zbieżny perspektywiczny rzut równoległy Funkcja glortho realizuje rzut równoległy

Kadrowanie i głębia ostrości Wykład 10. Wprowadzene do malarstwa, str. 6 O rzutowaniach HORYZONT rzut zbieżny perspektywiczny rzut równoległy Funkcja glortho realizuje rzut równoległy; rzut zbieżny realizuje funkcja gluperspective (nie na tym wykładzie).

Kadrowanie i głębia ostrości Wykład 10. Wprowadzene do malarstwa, str. 6 O rzutowaniach HORYZONT rzut zbieżny perspektywiczny rzut równoległy Funkcja glortho realizuje rzut równoległy; rzut zbieżny realizuje funkcja gluperspective (nie na tym wykładzie). O zmienianiu punktu widzenia mowa będzie później.

Pierwsze szkice Funkcja wywołana w glutdisplayfunc tworzy rysunek. Wykład 10. Wprowadzene do malarstwa, str. 7

Pierwsze szkice Funkcja wywołana w glutdisplayfunc tworzy rysunek. W OpenGL rysunek powstaje z wierzchołków Wykład 10. Wprowadzene do malarstwa, str. 7

Pierwsze szkice Funkcja wywołana w glutdisplayfunc tworzy rysunek. W OpenGL rysunek powstaje z wierzchołków: Wykład 10. Wprowadzene do malarstwa, str. 7 glbegin(gl LINE LOOP); glvertex3d(-5, 0, 0); glvertex3d( 0, 5, 0); glvertex3d( 5, 0, 0); glvertex3d( 0,-5, 0); glend();

Pierwsze szkice Funkcja wywołana w glutdisplayfunc tworzy rysunek. W OpenGL rysunek powstaje z wierzchołków: Wykład 10. Wprowadzene do malarstwa, str. 7 glbegin(gl LINE LOOP); glvertex3d(-5, 0, 0); glvertex3d( 0, 5, 0); glvertex3d( 5, 0, 0); glvertex3d( 0,-5, 0); glend(); ( 5,0,0) (0,5,0) (0, 5,0) (5,0,0)

Pierwsze szkice Funkcja wywołana w glutdisplayfunc tworzy rysunek. W OpenGL rysunek powstaje z wierzchołków: Wykład 10. Wprowadzene do malarstwa, str. 7 glbegin(gl LINE LOOP); glvertex3d(-5, 0, 0); glvertex3d( 0, 5, 0); glvertex3d( 5, 0, 0); glvertex3d( 0,-5, 0); glend(); ( 5,0,0) (0,5,0) (0, 5,0) (5,0,0) GL POINTS rysuje zbiór punktów. GL LINES rysuje pary odcinków. GL LINE STRIP rysuje łamaną otwartą. GL LINE LOOP rysuje łamaną zamkniętą. GL POLYGON rysuje wypełniony wielokąt.

Pierwsze szkice Funkcja wywołana w glutdisplayfunc tworzy rysunek. W OpenGL rysunek powstaje z wierzchołków: Wykład 10. Wprowadzene do malarstwa, str. 7 glbegin(gl LINE LOOP); glvertex3d(-5, 0, 0); glvertex3d( 0, 5, 0); glvertex3d( 5, 0, 0); glvertex3d( 0,-5, 0); glend(); ( 5,0,0) (0,5,0) (0, 5,0) (5,0,0) GL POINTS rysuje zbiór punktów. GL LINES rysuje pary odcinków. GL LINE STRIP rysuje łamaną otwartą. GL LINE LOOP rysuje łamaną zamkniętą. GL POLYGON rysuje wypełniony wielokąt. (por. program wprawki1.c).

Pierwsze szkice Wykład 10. Wprowadzene do malarstwa, str. 8 Modyfikacje rysunku

Pierwsze szkice Wykład 10. Wprowadzene do malarstwa, str. 8 Modyfikacje rysunku glcolor3d(kolor); ustalenie koloru(ważne aż do ustalenia nowego koloru); np. glcolor3d(1.0, 0.0, 0.0); oznaczaczerwony(r=1.0,g=0.0,b=0.0);

Pierwsze szkice Wykład 10. Wprowadzene do malarstwa, str. 8 Modyfikacje rysunku glcolor3d(kolor); ustalenie koloru(ważne aż do ustalenia nowego koloru); np. glcolor3d(1.0, 0.0, 0.0); oznaczaczerwony(r=1.0,g=0.0,b=0.0); gllinewidth(liczba pikseli); ustalenie grubości linii(ważne aż do ustalenia nowej grubości); np. gllinewidth(5); oznacza linie szerokości 5 pikseli;

Pierwsze szkice Wykład 10. Wprowadzene do malarstwa, str. 8 Modyfikacje rysunku glcolor3d(kolor); ustalenie koloru(ważne aż do ustalenia nowego koloru); np. glcolor3d(1.0, 0.0, 0.0); oznaczaczerwony(r=1.0,g=0.0,b=0.0); gllinewidth(liczba pikseli); ustalenie grubości linii(ważne aż do ustalenia nowej grubości); np. gllinewidth(5); oznacza linie szerokości 5 pikseli; glpushmatrix(); gltranslated(x, y, z); glpopmatrix(); przesunięcieobrazkaowektor(x,y,z).

Pierwsze szkice Wykład 10. Wprowadzene do malarstwa, str. 9 Ciało funkcji rysującej musi

Pierwsze szkice Wykład 10. Wprowadzene do malarstwa, str. 9 Ciało funkcji rysującej musi zaczynaćsięod glclear(gl COLOR BUFFER BIT); inaczej w rysunku mogą wystąpić śmieci

Pierwsze szkice Wykład 10. Wprowadzene do malarstwa, str. 9 Ciało funkcji rysującej musi zaczynaćsięod glclear(gl COLOR BUFFER BIT); inaczej w rysunku mogą wystąpić śmieci

Pierwsze szkice Wykład 10. Wprowadzene do malarstwa, str. 9 Ciało funkcji rysującej musi zaczynaćsięod glclear(gl COLOR BUFFER BIT); inaczej w rysunku mogą wystąpić śmieci; kończyćsięna glflush(); (ang. flush = spłukać) żeby przygotowany rysunek się pojawił.

Pierwsze szkice Wykład 10. Wprowadzene do malarstwa, str. 9 Ciało funkcji rysującej musi zaczynaćsięod glclear(gl COLOR BUFFER BIT); inaczej w rysunku mogą wystąpić śmieci; kończyćsięna glflush(); (ang. flush = spłukać) żeby przygotowany rysunek się pojawił.

Linie inne niż łamane Wykład 10. Wprowadzene do malarstwa, str. 10 Linie inne niż łamane są rysowane jako łamane z bardzo krótkich odcinków.

Linie inne niż łamane Wykład 10. Wprowadzene do malarstwa, str. 10 Linie inne niż łamane są rysowane jako łamane z bardzo krótkich odcinków. glbegin(gl LINE STRIP); for(double x=-4.0; x<=4.0; x+=przyrost) glvertex3d(x, x*x-7, 0); glend(); parabola

Linie inne niż łamane Wykład 10. Wprowadzene do malarstwa, str. 10 Linie inne niż łamane są rysowane jako łamane z bardzo krótkich odcinków. glbegin(gl LINE STRIP); for(double x=-4.0; x<=4.0; x+=przyrost) glvertex3d(x, x*x-7, 0); glend(); parabola glbegin(gl POLYGON); for(double kat=0; kat<=2*m PI; kat+=przyrost) glvertex3d(prom*cos(kat), prom*sin(kat), 0); glend(); koło pełne

Linie inne niż łamane Wykład 10. Wprowadzene do malarstwa, str. 10 Linie inne niż łamane są rysowane jako łamane z bardzo krótkich odcinków. glbegin(gl LINE STRIP); for(double x=-4.0; x<=4.0; x+=przyrost) glvertex3d(x, x*x-7, 0); glend(); parabola glbegin(gl POLYGON); for(double kat=0; kat<=2*m PI; kat+=przyrost) glvertex3d(prom*cos(kat), prom*sin(kat), 0); glend(); koło pełne (por. program wprawki2.c).

Ćwiczenie z rysowania buźki Wykład 10. Wprowadzene do malarstwa, str. 11

Ćwiczenie z rysowania buźki Wykład 10. Wprowadzene do malarstwa, str. 11 Buźka składa się z: okręgu stanowiącego obrys; koła stanowiącego wypełnienie; oczuzłożonychzdwóchłuków (odcinków okręgu); ust wycinkakoła; nosa kuli,wystającejwtrzeci wymiar.

Ćwiczenie z rysowania buźki Wykład 10. Wprowadzene do malarstwa, str. 11 Buźka składa się z: okręgu stanowiącego obrys; koła stanowiącego wypełnienie; oczuzłożonychzdwóchłuków (odcinków okręgu); ust wycinkakoła; nosa kuli,wystającejwtrzeci wymiar.

Ćwiczenie z rysowania buźki Wykład 10. Wprowadzene do malarstwa, str. 11 Buźka składa się z: okręgu stanowiącego obrys; koła stanowiącego wypełnienie; oczuzłożonychzdwóchłuków (odcinków okręgu); ust wycinkakoła; nosa kuli,wystającejwtrzeci wymiar.

Ćwiczenie z rysowania buźki Wykład 10. Wprowadzene do malarstwa, str. 11 Buźka składa się z: okręgu stanowiącego obrys; koła stanowiącego wypełnienie; oczuzłożonychzdwóchłuków (odcinków okręgu); ust wycinkakoła; nosa kuli,wystającejwtrzeci wymiar.

Ćwiczenie z rysowania buźki Wykład 10. Wprowadzene do malarstwa, str. 11 Buźka składa się z: okręgu stanowiącego obrys; koła stanowiącego wypełnienie; oczuzłożonychzdwóchłuków (odcinków okręgu); ust wycinkakoła; nosa kuli,wystającejwtrzeci wymiar.

Ćwiczenie z rysowania buźki Wykład 10. Wprowadzene do malarstwa, str. 11 Buźka składa się z: okręgu stanowiącego obrys; koła stanowiącego wypełnienie; oczuzłożonychzdwóchłuków (odcinków okręgu); ust wycinkakoła; nosa kuli,wystającejwtrzeci wymiar. (por. program wprawki3.c).

Ćwiczenie z rysowania buźki Wykład 10. Wprowadzene do malarstwa, str. 11 Buźka składa się z: okręgu stanowiącego obrys; koła stanowiącego wypełnienie; oczuzłożonychzdwóchłuków (odcinków okręgu); ust wycinkakoła; nosa kuli,wystającejwtrzeci wymiar. (por. program wprawki3.c). To,żenosjestkuląaniekołem,uwidocznisię,kiedybędziemymoglispojrzećnabuźkęzboku.

Zmiana punktu widzenia y Wykład 10. Wprowadzene do malarstwa, str. 12 x z...

Zmiana punktu widzenia y Wykład 10. Wprowadzene do malarstwa, str. 12 x... z

Zmiana punktu widzenia Wykład 10. Wprowadzene do malarstwa, str. 12 y x... z glulookat(gdzie jest oko, na co patrzy, co przedstawić na górze)

Zmiana punktu widzenia Wykład 10. Wprowadzene do malarstwa, str. 13 glulookat(gdzie jest oko, na co patrzy, co przedstawić na górze)

Zmiana punktu widzenia Wykład 10. Wprowadzene do malarstwa, str. 13 glulookat(gdzie jest oko, na co patrzy, co przedstawić na górze) Standardowo OpenGL patrzy odstronydodatniejpółosiz

Zmiana punktu widzenia Wykład 10. Wprowadzene do malarstwa, str. 13 glulookat(gdzie jest oko, na co patrzy, co przedstawić na górze) Standardowo OpenGL patrzy odstronydodatniejpółosiz wkierunkupunktu(0,0,0)

Zmiana punktu widzenia Wykład 10. Wprowadzene do malarstwa, str. 13 glulookat(gdzie jest oko, na co patrzy, co przedstawić na górze) Standardowo OpenGL patrzy odstronydodatniejpółosiz wkierunkupunktu(0,0,0) tak, żeby dodatnia półoś y wskazywała w górę rysunku.

Zmiana punktu widzenia Wykład 10. Wprowadzene do malarstwa, str. 13 glulookat(gdzie jest oko, na co patrzy, co przedstawić na górze) Standardowo OpenGL patrzy odstronydodatniejpółosiz wkierunkupunktu(0,0,0) tak, żeby dodatnia półoś y wskazywała w górę rysunku. Możemy to zmienić przez użycie funkcji glulookat: pierwsze trzy argumenty współrzędne oka

Zmiana punktu widzenia Wykład 10. Wprowadzene do malarstwa, str. 13 glulookat(gdzie jest oko, na co patrzy, co przedstawić na górze) Standardowo OpenGL patrzy odstronydodatniejpółosiz wkierunkupunktu(0,0,0) tak, żeby dodatnia półoś y wskazywała w górę rysunku. Możemy to zmienić przez użycie funkcji glulookat: pierwsze trzy argumenty współrzędne oka; następne trzy argumenty współrzędne punktu, w kierunku którego patrzymy

Zmiana punktu widzenia Wykład 10. Wprowadzene do malarstwa, str. 13 glulookat(gdzie jest oko, na co patrzy, co przedstawić na górze) Standardowo OpenGL patrzy odstronydodatniejpółosiz wkierunkupunktu(0,0,0) tak, żeby dodatnia półoś y wskazywała w górę rysunku. Możemy to zmienić przez użycie funkcji glulookat: pierwsze trzy argumenty współrzędne oka; następne trzy argumenty współrzędne punktu, w kierunku którego patrzymy; ostatnie trzy argumenty kierunek w górę obrazka.

Zmiana punktu widzenia Wykład 10. Wprowadzene do malarstwa, str. 14 Standardowy punkt widzenia

Zmiana punktu widzenia Wykład 10. Wprowadzene do malarstwa, str. 14 Standardowy punkt widzenia Punkt widzenia po glulookat(3,0,1, 0,0,0, 0,1,0);

Zmiana punktu widzenia Wykład 10. Wprowadzene do malarstwa, str. 14 Standardowy punkt widzenia Punkt widzenia po glulookat(3,0,1, 0,0,0, 0,1,0); okonapłaszczyźniexz,bardzozprawej

Zmiana punktu widzenia Wykład 10. Wprowadzene do malarstwa, str. 14 Standardowy punkt widzenia Punkt widzenia po glulookat(3,0,1, 0,0,0, 0,1,0); okonapłaszczyźniexz,bardzozprawej centrum sceny w początku układu współrzędnych

Zmiana punktu widzenia Wykład 10. Wprowadzene do malarstwa, str. 14 Standardowy punkt widzenia Punkt widzenia po glulookat(3,0,1, 0,0,0, 0,1,0); okonapłaszczyźniexz,bardzozprawej centrum sceny w początku układu współrzędnych, ośypatrzywgórę.

Zmiana punktu widzenia Wykład 10. Wprowadzene do malarstwa, str. 14 Standardowy punkt widzenia Punkt widzenia po glulookat(3,0,1, 0,0,0, 0,1,0); okonapłaszczyźniexz,bardzozprawej centrum sceny w początku układu współrzędnych, ośypatrzywgórę. (por. program wprawki4.c).

Zmiana punktu widzenia Wykład 10. Wprowadzene do malarstwa, str. 15 OpenGL transformuje kierunki rzutowania(również oświetlenie itp.) przy pomocy rachunku macierzowego. Zmianie punktu widzenia odpowiada przekształcenie obrazu, polegające na pomnożeniu przez odpowiednią macierz.

Zmiana punktu widzenia Wykład 10. Wprowadzene do malarstwa, str. 15 OpenGL transformuje kierunki rzutowania(również oświetlenie itp.) przy pomocy rachunku macierzowego. Zmianie punktu widzenia odpowiada przekształcenie obrazu, polegające na pomnożeniu przez odpowiednią macierz. Polecenie ustalenia rzutu(np. równoległego) w funkcji odpowiedzialnej za geometrię należy poprzedzić informacją, że będziemy zmieniać macierz odpowiedzialną za perspektywę i że początkowo ma to być macierz jednostkowa

Zmiana punktu widzenia Wykład 10. Wprowadzene do malarstwa, str. 15 OpenGL transformuje kierunki rzutowania(również oświetlenie itp.) przy pomocy rachunku macierzowego. Zmianie punktu widzenia odpowiada przekształcenie obrazu, polegające na pomnożeniu przez odpowiednią macierz. Polecenie ustalenia rzutu(np. równoległego) w funkcji odpowiedzialnej za geometrię należy poprzedzić informacją, że będziemy zmieniać macierz odpowiedzialną za perspektywę i że początkowo ma to być macierz jednostkowa: voidgeom(intw,inth) { glmatrixmode(gl PROJECTION); glloadidentity(); glortho(-20, 20,-15, 15,-25, 25); }

Zmiana punktu widzenia Wykład 10. Wprowadzene do malarstwa, str. 16 OpenGL transformuje kierunki rzutowania(również oświetlenie itp.) przy pomocy rachunku macierzowego. Zmianie punktu widzenia odpowiada przekształcenie obrazu, polegające na pomnożeniu przez odpowiednią macierz. Polecenie ustalenia punktu widzenia w funkcji odpowiedzialnej za wyswietlanie należy poprzedzić informacją, że będziemy zmieniać macierz odpowiedzialną za widok modelu, oraz że początkowo ma to być macierz jednostkowa

Zmiana punktu widzenia Wykład 10. Wprowadzene do malarstwa, str. 16 OpenGL transformuje kierunki rzutowania(również oświetlenie itp.) przy pomocy rachunku macierzowego. Zmianie punktu widzenia odpowiada przekształcenie obrazu, polegające na pomnożeniu przez odpowiednią macierz. Polecenie ustalenia punktu widzenia w funkcji odpowiedzialnej za wyswietlanie należy poprzedzić informacją, że będziemy zmieniać macierz odpowiedzialną za widok modelu, oraz że początkowo ma to być macierz jednostkowa: void wyswietl(void) { glclear(gl COLOR BUFFER BIT); glmatrixmode(gl MODELVIEW); glloadidentity(); glulookat(3,0,1, 0,0,0, 0,1,0); twarz(); glflush(); }

Wykład 10. Wprowadzene do malarstwa, str. 17 Film ruchomy(ale ciągle niemy) Jak wyświetlać różniące się obrazki jeden za drugim, żeby uzyskać efekt ruchu?

Wykład 10. Wprowadzene do malarstwa, str. 17 Film ruchomy(ale ciągle niemy) Jak wyświetlać różniące się obrazki jeden za drugim, żeby uzyskać efekt ruchu? funkcji wyświetlającej zabrać odpowiedzialność za punkt widzenia: void wyswietl(void) { glclear(gl COLOR BUFFER BIT); glmatrixmode(gl MODELVIEW); glloadidentity(); glulookat(3,0,1, 0,0,0, 0,1,0); twarz(); glflush(); }

Wykład 10. Wprowadzene do malarstwa, str. 17 Film ruchomy(ale ciągle niemy) Jak wyświetlać różniące się obrazki jeden za drugim, żeby uzyskać efekt ruchu? funkcji wyświetlającej zabrać odpowiedzialność za punkt widzenia: void wyswietl(void) { glclear(gl COLOR BUFFER BIT); glmatrixmode(gl MODELVIEW); glloadidentity(); glulookat(3,0,1, 0,0,0, 0,1,0); twarz(); glflush(); } (ale pozostawić zbudowanie początkowego obrazka).

Wykład 10. Wprowadzene do malarstwa, str. 17 Film ruchomy(ale ciągle niemy) Jak wyświetlać różniące się obrazki jeden za drugim, żeby uzyskać efekt ruchu? funkcji wyświetlającej zabrać odpowiedzialność za punkt widzenia: void wyswietl(void) { glclear(gl COLOR BUFFER BIT); glmatrixmode(gl MODELVIEW); glloadidentity(); glulookat(3,0,1, 0,0,0, 0,1,0); twarz(); glflush(); } (ale pozostawić zbudowanie początkowego obrazka). dodatkowej funkcji powierzyć modyfikacje obrazka; np. co ustalony czas; albo co kliknięcie myszą.

Wykład 10. Wprowadzene do malarstwa, str. 18 Film ruchomy(ale ciągle niemy) W części main umieścić informację, że będzie używany czasomierz: gluttimerfunc(15, timer, 0); zwłoka w milisekundach funkcja czasomierza parametr dla fkcji czasomierza

Wykład 10. Wprowadzene do malarstwa, str. 18 Film ruchomy(ale ciągle niemy) W części main umieścić informację, że będzie używany czasomierz: gluttimerfunc(15, timer, 0); zwłoka w milisekundach Zdefiniować zmiany w obrazku: funkcja czasomierza parametr dla fkcji czasomierza void timer(int v) { staticdoublealfa=0; alfa+=katobrotu; if(alfa>=2*mpi)alfa-=2*mpi; glmatrixmode(gl MODELVIEW); glloadidentity(); glulookat(20*cos(alfa), 7, 20*sin(alfa), 0,0,0, 0,1,0); glutpostredisplay(); gluttimerfunc(15, timer, v); }

Wykład 10. Wprowadzene do malarstwa, str. 18 Film ruchomy(ale ciągle niemy) W części main umieścić informację, że będzie używany czasomierz: gluttimerfunc(15, timer, 0); zwłoka w milisekundach Zdefiniować zmiany w obrazku: funkcja czasomierza parametr dla fkcji czasomierza void timer(int v) { staticdoublealfa=0; alfa+=katobrotu; if(alfa>=2*mpi)alfa-=2*mpi; glmatrixmode(gl MODELVIEW); glloadidentity(); glulookat(20*cos(alfa), 7, 20*sin(alfa), 0,0,0, 0,1,0); glutpostredisplay(); gluttimerfunc(15, timer, v); } (por. program wprawki5.c).

Zasłanianie Wykład 10. Wprowadzene do malarstwa, str. 19 Fragmenty obrazka narysowane później zakrywają fragmenty narysowane wcześniej. Nos był narysowany na końcu, dlatego jest stale na wierzchu. Jak to leczyć?

Zasłanianie Wykład 10. Wprowadzene do malarstwa, str. 19 Fragmenty obrazka narysowane później zakrywają fragmenty narysowane wcześniej. Nos był narysowany na końcu, dlatego jest stale na wierzchu. Jak to leczyć?

Zasłanianie Wykład 10. Wprowadzene do malarstwa, str. 19 Fragmenty obrazka narysowane później zakrywają fragmenty narysowane wcześniej. Nos był narysowany na końcu, dlatego jest stale na wierzchu. Jak to leczyć?

Zasłanianie Wykład 10. Wprowadzene do malarstwa, str. 19 Fragmenty obrazka narysowane później zakrywają fragmenty narysowane wcześniej. Nos był narysowany na końcu, dlatego jest stale na wierzchu. Jak to leczyć?

Zasłanianie Wykład 10. Wprowadzene do malarstwa, str. 19 Fragmenty obrazka narysowane później zakrywają fragmenty narysowane wcześniej. Nos był narysowany na końcu, dlatego jest stale na wierzchu. Jak to leczyć? Sprawdzanie głębokości OpenGL może sprawdzać odległość elementów sceny od obserwatora i nie rysować dalszych, zasłoniętych przez bliższe.

Zasłanianie Wykład 10. Wprowadzene do malarstwa, str. 19 Fragmenty obrazka narysowane później zakrywają fragmenty narysowane wcześniej. Nos był narysowany na końcu, dlatego jest stale na wierzchu. Jak to leczyć? Sprawdzanie głębokości OpenGL może sprawdzać odległość elementów sceny od obserwatora i nie rysować dalszych, zasłoniętych przez bliższe. W części main: glenable(gl DEPTH TEST); W funkcji wyświetlającej: glclear(gl DEPTH BUFFER BIT);

Zasłanianie Wykład 10. Wprowadzene do malarstwa, str. 19 Fragmenty obrazka narysowane później zakrywają fragmenty narysowane wcześniej. Nos był narysowany na końcu, dlatego jest stale na wierzchu. Jak to leczyć? Sprawdzanie głębokości OpenGL może sprawdzać odległość elementów sceny od obserwatora i nie rysować dalszych, zasłoniętych przez bliższe. W części main: glenable(gl DEPTH TEST); W funkcji wyświetlającej: glclear(gl DEPTH BUFFER BIT);

Zasłanianie Wykład 10. Wprowadzene do malarstwa, str. 19 Fragmenty obrazka narysowane później zakrywają fragmenty narysowane wcześniej. Nos był narysowany na końcu, dlatego jest stale na wierzchu. Jak to leczyć? Sprawdzanie głębokości OpenGL może sprawdzać odległość elementów sceny od obserwatora i nie rysować dalszych, zasłoniętych przez bliższe. W części main: glenable(gl DEPTH TEST); (por. program wprawki6.c). W funkcji wyświetlającej: glclear(gl DEPTH BUFFER BIT);

Zasłanianie dlaczego miga?! Wykład 10. Wprowadzene do malarstwa, str. 20 Dwa wielokąty wypełnienie buzki i usta są narysowane w tej samej płaszczyźnie, więc OpenGL nie wie, który powinien zasłaniać który. Jak to leczyć?

Zasłanianie dlaczego miga?! Wykład 10. Wprowadzene do malarstwa, str. 20 Dwa wielokąty wypełnienie buzki i usta są narysowane w tej samej płaszczyźnie, więc OpenGL nie wie, który powinien zasłaniać który. Jak to leczyć?

Zasłanianie dlaczego miga?! Wykład 10. Wprowadzene do malarstwa, str. 20 Dwa wielokąty wypełnienie buzki i usta są narysowane w tej samej płaszczyźnie, więc OpenGL nie wie, który powinien zasłaniać który. Jak to leczyć?

Zasłanianie dlaczego miga?! Wykład 10. Wprowadzene do malarstwa, str. 20 Dwa wielokąty wypełnienie buzki i usta są narysowane w tej samej płaszczyźnie, więc OpenGL nie wie, który powinien zasłaniać który. Jak to leczyć? Lekko przesunąć w przestrzeni jeden wielokąt, żeby uniknąć współpłaszczyznowości z drugim

Zasłanianie dlaczego miga?! Wykład 10. Wprowadzene do malarstwa, str. 20 Dwa wielokąty wypełnienie buzki i usta są narysowane w tej samej płaszczyźnie, więc OpenGL nie wie, który powinien zasłaniać który. Jak to leczyć? Lekko przesunąć w przestrzeni jeden wielokąt, żeby uniknąć współpłaszczyznowości z drugim: glpushmatrix(); gltranslated(0, 0, 0.5); glbegin(gl POLYGON); odcinek okregu(1.414*4, 5*M PI/4, 7*M PI/4); glend(); glpopmatrix();

Zasłanianie dlaczego miga?! Wykład 10. Wprowadzene do malarstwa, str. 20 Dwa wielokąty wypełnienie buzki i usta są narysowane w tej samej płaszczyźnie, więc OpenGL nie wie, który powinien zasłaniać który. Jak to leczyć? Lekko przesunąć w przestrzeni jeden wielokąt, żeby uniknąć współpłaszczyznowości z drugim: glpushmatrix(); gltranslated(0, 0, 0.5); glbegin(gl POLYGON); odcinek okregu(1.414*4, 5*M PI/4, 7*M PI/4); glend(); glpopmatrix(); (por. program wprawki7.c).

Więcej przestrzeni! Wykład 10. Wprowadzene do malarstwa, str. 21 Drugiednoodtyłu glpushmatrix(); gltranslated(0, 0,-2); glcolor3d(czarn); //obrysbuzki... glcolor3d(szary); // wypelnienie buzki... glpopmatrix();

Więcej przestrzeni! Wykład 10. Wprowadzene do malarstwa, str. 21 Drugiednoodtyłu korzyśćzprzesunięć: glpushmatrix(); gltranslated(0, 0,-2); glcolor3d(czarn); //obrysbuzki... glcolor3d(szary); // wypelnienie buzki... glpopmatrix();

Więcej przestrzeni! Wykład 10. Wprowadzene do malarstwa, str. 21 Drugiednoodtyłu korzyśćzprzesunięć: glpushmatrix(); gltranslated(0, 0,-2); glcolor3d(czarn); //obrysbuzki... glcolor3d(szary); // wypelnienie buzki... glpopmatrix(); (por. program wprawki8.c).

Więcej przestrzeni! Wykład 10. Wprowadzene do malarstwa, str. 21 Drugiednoodtyłu korzyśćzprzesunięć: glpushmatrix(); gltranslated(0, 0,-2); glcolor3d(czarn); //obrysbuzki... glcolor3d(szary); // wypelnienie buzki... glpopmatrix(); (por. program wprawki8.c). Zadanie domowe: Dorobić powierzchnię walcową między dwoma szarymi kołami, żeby zamknąć pudełko.

Więcej światła! Wykład 10. Wprowadzene do malarstwa, str. 22 Bez właściwego oświetlenia nie widać przestrzenności: Ilustracja z http://www.glprogramming.com/red/chapter05.html (por. program wprawki9.c).

Więcej światła! Wykład 10. Wprowadzene do malarstwa, str. 23 Ustawianie źródeł światła: glenable(gl LIGHTING); GLfloatswiatlomce[]={2,2,-1,0}; gllightfv(gl LIGHT0, GL POSITION, swiatlo mce); glenable(gl LIGHT0); glenable(gl COLOR MATERIAL);

Więcej światła! Wykład 10. Wprowadzene do malarstwa, str. 23 Ustawianie źródeł światła: glenable(gl LIGHTING); GLfloatswiatlomce[]={2,2,-1,0}; gllightfv(gl LIGHT0, GL POSITION, swiatlo mce); glenable(gl LIGHT0); glenable(gl COLOR MATERIAL); Oświetlenie jest rzeczą skomplikowaną.

Więcej światła! Wykład 10. Wprowadzene do malarstwa, str. 23 Ustawianie źródeł światła: glenable(gl LIGHTING); GLfloatswiatlomce[]={2,2,-1,0}; gllightfv(gl LIGHT0, GL POSITION, swiatlo mce); glenable(gl LIGHT0); glenable(gl COLOR MATERIAL); Oświetlenie jest rzeczą skomplikowaną. W OpenGL Można ustawiać m.in. charakterystykę światła(kolor, rozproszenie itp.)

Więcej światła! Wykład 10. Wprowadzene do malarstwa, str. 23 Ustawianie źródeł światła: glenable(gl LIGHTING); GLfloatswiatlomce[]={2,2,-1,0}; gllightfv(gl LIGHT0, GL POSITION, swiatlo mce); glenable(gl LIGHT0); glenable(gl COLOR MATERIAL); Oświetlenie jest rzeczą skomplikowaną. W OpenGL Można ustawiać m.in. charakterystykę światła(kolor, rozproszenie itp.), geometrię powierzchni odbijającej(jak jest powyginana)

Więcej światła! Wykład 10. Wprowadzene do malarstwa, str. 23 Ustawianie źródeł światła: glenable(gl LIGHTING); GLfloatswiatlomce[]={2,2,-1,0}; gllightfv(gl LIGHT0, GL POSITION, swiatlo mce); glenable(gl LIGHT0); glenable(gl COLOR MATERIAL); Oświetlenie jest rzeczą skomplikowaną. W OpenGL Można ustawiać m.in. charakterystykę światła(kolor, rozproszenie itp.), geometrię powierzchni odbijającej(jak jest powyginana), charakterystykę powierzchni odbijającej(kolor, połysk, gładkość, itp.)

Więcej światła! Wykład 10. Wprowadzene do malarstwa, str. 23 Ustawianie źródeł światła: glenable(gl LIGHTING); GLfloatswiatlomce[]={2,2,-1,0}; gllightfv(gl LIGHT0, GL POSITION, swiatlo mce); glenable(gl LIGHT0); glenable(gl COLOR MATERIAL); Oświetlenie jest rzeczą skomplikowaną. W OpenGL Można ustawiać m.in. charakterystykę światła(kolor, rozproszenie itp.), geometrię powierzchni odbijającej(jak jest powyginana), charakterystykę powierzchni odbijającej(kolor, połysk, gładkość, itp.), osłabianie i rozmywanie światła przez odległość, mgłę itd.