Ispit Materijal OpenGL

You might also like

Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 8

OpenGL

1 Kreiranje aplikacije

1.1 Funkcije za rad sa stanjima

glEnable()
glDisable()
glGetBooleanv()
glGetDoublev()
glGetFloatv()
glGetIntegerv()
glGetPointerv()
glIsEnabled()
glGetLight*()
glGetError()
glGetPolygonStipple()
glPushAttrib()
glPushClientAttrib()
glPopAttrib()
glPopClientAttrib()

1.2 Brisanje prozora

void glClear(GLbitfield mask)

bafer Kod
Color buffer GL_COLOR_BUFFER_BIT
Depth buffer GL_DEPTH_BUFFER_BIT
Accumulation buffer GL_ACCUM_BUFFER_BIT
Stencil buffer GL_STENCIL_BUFFER_BIT

glClearColor( TYPE r, TYPE g, TYPE b, TYPE a );


glClearDepth( GLdouble depth );
1.3 Crtanje primitiva

glBegin(GLbitfield primitiveCode);
...
glEnd();

1.4 Stilovi OpenGL prozora

WS_CLIPSIBLINGS
WS_CLIPCHILDREN

1.5 Priprema pri kreiranju prozora

typedef struct tagPIXELFORMATDESCRIPTOR { // pfd


WORD nSize;
WORD nVersion;
DWORD dwFlags; // PFD_DOUBLEBUFFER or PFD_SUPPORT_OPENGL or
PFD_DRAW_TO_WINDOW;
BYTE iPixelType; //PFD_TYPE_RGBA or PFD_TYPE_COLORINDEX
BYTE cColorBits; //For RGBA pixel types, it is the size of the color buffer, excluding the alpha
bitplanes.
BYTE cRedBits;
BYTE cRedShift;
BYTE cGreenBits;
BYTE cGreenShift;
BYTE cBlueBits;
BYTE cBlueShift;
BYTE cAlphaBits;
BYTE cAlphaShift;
BYTE cAccumBits;
BYTE cAccumRedBits;
BYTE cAccumGreenBits;
BYTE cAccumBlueBits;
BYTE cAccumAlphaBits;
BYTE cDepthBits;
BYTE cStencilBits;
BYTE cAuxBuffers;
BYTE iLayerType; //Ignored. Earlier implementations of OpenGL used this member, but it is no
longer used.
BYTE bReserved;
DWORD dwLayerMask; DWORD dwVisibleMask; DWORD dwDamageMask; }
PIXELFORMATDESCRIPTOR;

int ChoosePixelFormat( HDC hdc, // device context to search for a best pixel format match
CONST PIXELFORMATDESCRIPTOR* ppfd // pixel format for which a best match is sought )
BOOL SetPixelFormat( HDC hdc, //device context whose pixel format the function attempts to set
int iPixelFormat, // pixel format index (one-based)
CONST PIXELFORMATDESCRIPTOR * ppfd // pointer to logical pixel format specification )

wglCreateContext( HGLRC m_hrc )

1.6 Iscrtavanje scene

BOOL wglMakeCurrent(
HDC hdc, // device context of device that OpenGL calls are to be drawn on
HGLRC hglrc // OpenGL rendering context to be made the calling
// thread's current rendering context
)

BOOL SwapBuffers( HDC hdc // device context whose buffers get swapped )

1.7 Unitavanje scene

wglDeleteContext( HDC hdc )

1.8 Biblioteke

#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>
#include <GL/glaux.h>
#include <math.h>
2 Pogled u 3D

2.1 Osnovne matrine operacije

void glMatrixMode( GLenum mode );


void glLoadIdentity( void );
void glLoadMatrix{fd}( const TYPE *m );
void glMultMatrix{fd}(const TYPE *m );
void glLoadTransposeMatrix{fd}( const TYPE *m );
void glMultyTransposeMatrix{fd}( const TYPE *m );

2.2 Transformacije pogleda i modelovanja

void glTranslate{fd}( TYPEx, TYPE y, TYPE z);


void glRotate{fd}( TYPE angle, TYPE x, TYPE y, TYPE z );
void glScale{fd}( TYPE x, TYPE y, TYPE z );

2.3 Definisanje transformacije pogleda

void gluLookAt( GLdouble eyex, GLdouble eyey, GLdouble eyez,


GLdouble centerx, GLdouble centery, GLdouble centerz,
GLdouble upx, GLdouble upy, GLdouble upz );

2.4 Projekcije

void glFrustum( GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble
znear, GLdouble zfar )
void gluPerspective( GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar);
void glOrtho( GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble
near, GLdouble far );

2.5 Viewport transformacije

void glViewport( GLint x, GLint y, GLsizei width, GLsizei height);


3 Osvetljenje

3.1 Zadavanje boje

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);

3.2 Definisanje naina senenja

void glShadeModel ( GLenum mode )

3.3 Definisanje normala

void glNormal3{bsidf}( TYPE nx, TYPE ny, TYPE nz );


void glNormal3{bsidf}v( const TYPE * v ) ;

3.4 Kreiranje izvora svetlosti

void glLight{if}[v]( GLenum light, GLenum pname, TYPE param );

pname
GL_AMBIENT
GL_DIFFUSE
GL_SPECULAR
GL_POSITION
GL_SPOT_DIRECTION
GL_SPOT_EXPONENT
GL_SPOT_CUTOFF
GL_CONSTANT_ATTENUATION
GL_LINEAR_ATTENUATION
GL_QUADRATIC_ATTENUATION

3.4 Modeli osvetljenja


Globalno ambijentalno svetlo glLightModelfv( GL_LIGHT_MODEL_AMBIENT,
lmodel_ambient )
Lokalni ili udaljeni pogled glLightModeli( GL_LIGHT_MODEL_LOCAL_VIEWER,
GL_TRUE ) // ili GL_FALSE
Dvostrano osvetljenje glLightModeli( GL_LIGHT_MODEL_TWO_SIDE,
GL_TRUE ) // ili GL_FALSE

3.5 Definisanje karakteristika materijala

void glMaterial{if}[v](GLenum face, GLenum pname, TYPE param );


face: GL_FRONT, GL_BACK, ili GL_FRONT_AND_BACK

Parametar Podrazumevana vrednost Znaenje


GL_AMBIENT (0.2, 0.2, 0.2, 1.0) Ambijentalna boja materijala
GL_DIFFUSE (0.8, 0.8, 0.8, 1.0) Difuziona boja materijala
Ambijentalna i difuziona boja
GL_AMBIENT_AND_DIFFUSE -
materijala
GL_SPECULAR (0.0, 0.0, 0.0, 1.0) Odsjaj materijala
GL_SHININESS 0.0 Eksponent odsjaja
GL_EMISSION (0.0, 0.0, 0.0, 1.0) Emisiona boja materijala
GL_COLOR_INDEXES (0,1,1) Kolor indeksi

3.6 Karakteristike materijala

void glColorMaterial( GLenum face, GLenum mode );


4 Teksture

4.1 Specificiranje teksture

void glTexImage2D(GLenum target, GLint level,


GLint components, GLsizei width, GLsizei height,
GLint border, GLenum format, GLenum type,
const GLvoid *pixels);

4.2 Smetanje bitmape

void glPixelStore{if}( GLenum pname, GLfloat param );


pname: GL_UNPACK_ALIGNMENT

4.3 Automatsko generisanje mipmapa

int gluBuild2DMipmaps(GLenum target, GLint components, GLint width, GLint height,


GLenum format, GLenum type, void * data);

4.3 Filtriranje teksture

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, param);


glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, param);

param Vrednosti
GL_TEXTURE_MAG_FILTER GL_NEAREST ili GL_LINEAR
GL_NEAREST,
GL_LINEAR,
GL_NEAREST_MIPMAP_NEAREST,
GL_TEXTURE_MIN_FILTER
GL_NEAREST_MIPMAP_LINEAR,
GL_LINEAR_MIPMAP_NEAREST,
ili GL_LINEAR_MIPMAP_LINEAR

4.4 Rad sa teksturama

void glGenTextures( GLsizei n, GLuint *textureNames );


GLboolean glIsTexture( GLuint textureName );
void glBindTexture( GLenum target, GLuint textureName );
void glDeleteTextures( GLsizei n, const GLuint *textureNames );
void glGetTexParameteriv( GL_TEXTURE_2D , GL_TEXTURE_RESIDENT , GLint *
params );
GLboolean glAreTexturesResident( GLsizei n, const GLuint *textureNames, GLboolean
*residences );
void glPrioritizeTextures( GLsizei n, const GLuint *textureNames, const GLclampf *priorities);
void glTexEnv{if}( GLenum target, GLenum pname, TYPE param );
void glTexEnv{if}v( GLenum target, GLenum pname, TYPE *param );
target: GL_TEXTURE_ENV
pname: GL_TEXTURE_ENV_MODE
param:GL_DECAL
GL_REPLACE
GL_MODULATE
GL_BLEND
void glTexCoord{1234}{sifd}( TYPE cords );
void glTexCoord{1234}{sifd}v( TYPE *cords );
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT );
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP );
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT );
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_ CLAMP );

You might also like