1 / 16

OpenGL

OpenGL. OpenGL SuperBible Second Edition http://www.inf.u-szeged.hu/oktatas/jegyzetek/KubaAttila/opengl/starthu.xml. Tematika OpenGL Primitívek létrehozása Transzformációk Megvilágítás … Előadás feldolgozása. Hasznos oldalak www.opengl.org reality.sgi.com/opengl/glut3

rosie
Download Presentation

OpenGL

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. OpenGL OpenGL SuperBible Second Edition http://www.inf.u-szeged.hu/oktatas/jegyzetek/KubaAttila/opengl/starthu.xml

  2. Tematika OpenGL Primitívek létrehozása Transzformációk Megvilágítás … Előadás feldolgozása Hasznos oldalak www.opengl.org reality.sgi.com/opengl/glut3 http://www.inf.u-szeged.hu/oktatas/jegyzetek/KubaAttila/opengl/starthu.xml www.mesa3d.org http://www.inf.u-szeged.hu/~tanacs/oktatas/szggraf04/szggraf04.html Bevezetés

  3. Feltételek • Gyakorlat • 2 kötelező program beadása a zh írása előtt • Aki nem adja be a kötelező programot az nem írhat zh-t! • 2 ZH megírása • Első zh október 24-29 héten • Második zh december 6-10 héten • Az előre kiadott segédanyagokon illetve kézzel írott saját jegyzeten kívül más nem használható. Zh írása alatt hálózat hozzáférés nem lesz • Pót/javító zh nem lesz!!! • Követelmények pontosítása az előadáson

  4. OpenGL szabvány Szoftveres felület a grafikus hardverhez 3D-s grafikus és modellező könyvtár Portábilis Nagyon gyors Gyorsabb, mint egy ray tracer SGI által tervezett és optimalizált algoritmusok Hogyan működik az OpenGL lépéseket kell megadni ahhoz, hogy megkapjuk az adott nézetet vagy megjelenést 200-nál több parancs és függvény Grafikus primitívek, megvilágítás, árnyékolás, textúrázás, keveredés, átlátszóság, animálás, stb. Nincs ablak kezelés Nincs OpenGL file formátum Bevezetés

  5. Általános megvalósítások Szoftveres Windows GDI Szöveg kiírás 2D-s vonal rajzolás ... Mesa Conformance teszt Bevezetés Application program OSservices I/Oservices GDI OpenGL SoftwareRasterizer Display/WindowingSystem

  6. Hardveres megvalósítások Speciális hardver eszköz meghajtó Minden OpenGL API fv. hívás a hardver meghajtóhoz megy Néha az OpenGL funkció szoftveresen van megvalósítva a meghajtó programban Más funkciók pedig egyenesen a hardvert használják Bevezetés Application program OSservices I/Oservices GDI OpenGL HardverDriver Display/WindowingSystem

  7. OpenGL alkalmazás fv. hívások Parancs puffer (pipeline) Vertex adat Textúra adat ... Transzformáció és megvilágítás Az objektumok geometriáját leíró pontok újraszámítása Raszterizálás Színes kép készül OpenGL pipeline OpenGLAPI Calls OpenGLCommandBuffer Flush Transformand Lighting Rasterization Framebuffer

  8. Minden parancs azonnali hatással van az aktuális renderelési állapotra (automata) Flag-ek A köd be van kapcsolva? Engedélyezett a megvilágítás? Numerikus értékek Függvények segítségével állíthatóak és lekérdezhetőek OpenGL állapot ‘masina’

  9. Függvény elnevezési szabályok • <Lib prefix><Root command><Optional arg. count><Optional arg. type> Color gl 3 f glColor3f(…)

  10. Kezdetekben AUX Kiegészítő library Kiváltotta a GLUT Ablakok kezelése Eseménykezelés (pl. joystick támogatás, pop-up menük) OpenGL függvénykészlet további kiegészítése (pl. 3D-s primitívek) OpenGL-től független fejlesztés Első program#include <windows.h>#include <gl\glut.h>void RenderScene(void) { glClear(GL_COLOR_BUFFER_BIT); glFlush();}void SetupRC(void) { glClearColor(0.0f, 0.0f, 1.0f, 1.0f);}void main (void) { glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutCreateWindow(”Simple”); glutDisplayFunc(RenderScene); SetupRC(); glutMainLoop(); } OpenGL utility toolkit (GLUT) http://www.opengl.org

  11. Linux Makefile (RedHat 7.3) • # Makefile for OpenGL examplesAPPS = simpleOBJ = $(APPS).oSRC = $(APPS).cCFLAGS = $(C_OPTS) -I/usr/includeLIBS = -L/usr/X11R6/lib -lX11 -lXi -lXmu -lglut -lGL -lGLU -lm -lpthread application:$(APPS)clean: rm -f $(APPS) *.raw *.o core a.outrealclean: clean rm -f *~ *.bak *.BAK.SUFFIXES: c o.c.o: $(CC) -c $(CFLAGS) $<$(APPS): $(OBJ) $(CC) -o $(APPS) $(CFLAGS) $(OBJ) $(LIBS)depend: makedepend -- $(CFLAGS) $(SRC)

  12. Programozási könyvtár opengl32.dll glu32.dll opengl32.lib glu32.lib gl.h, glu.h Példa#include <windows.h> ?!#include <gl/gl.h>#include <gl/glu.h> Adattípusok GLbyte GLshort GLint, GLsizei GLfloat, GLclampf GLdouble, GLclampd GLubyte, GLboolean GLushort GLuint, GLenum, GLbitfield OpenGL használata

  13. glutInitDisplayMode(unsigned int mode) Inicializálja a megjelenítési módot mode GLUT_SINGLE GLUT_DOUBLE GLUT_RGB, GLUT_RGBA GLUT_DEPTH GLUT_STENCIL GLUT_ACCUM GLUT_APLHA glutDisplayFunc(void *(f)(void)) Beállítja a callback fv.-t az aktuális ablakon Átméretezés Előtérbe kerülés glutPostRedisplay glFlush és glutSwapBuffers nem hívódik meg automatikusan ezután Függvények az első programban

  14. void glutMainLoop(void) Elindítja a GLUT eseménykezelő ciklusát Nem tér vissza csak a program befejezése után void glClear(GLbitfield mask); Az adott puffereket törli A puffer egy tárolási terület a kép információ számára Mask GL_COLOR_BUFFER_BIT GL_DEPTH_BUFFER_BIT GL_STENCIL_BUFFER_BIT GL_ACCUM_BUFFER_BIT Függvények az első programban

  15. void glFlush(void) Az OpenGL parancs sort és puffereket üríti A várakozó parancsok végrehajtódnak void glClearColor(GLclamf r,GLclampf g, GLclampf b, GLclampf a) Beállítja a kitöltési értéket, amit a red, green, blue és alpha (szín) pufferek törlésekor használ majd Az értékek [0.0f, 1.0f] között lehetnek Függvények az első programban

  16. #include <windows.h>#include <gl\glut.h>void RenderScene(void) { glClear(GL_COLOR_BUFFER_BIT);glColor3f(1.0f, 0.0f, 0.0f);glutWireTeapot(0.5f); glFlush();}void SetupRC(void) { glClearColor(0.0f, 0.0f, 1.0f, 1.0f);}void main (void) { glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutCreateWindow(”Teapot”); glutDisplayFunc(RenderScene); SetupRC(); glutMainLoop(); } Teáskanna

More Related