LE | GLUT_RGB);
glutInitWindowSize (250, 250),
glutInitWindowPosition (100, 100);
glutCreateWindow (argv [0]);
init <);
glutDisplayFunc (display);
glutReshapeFunc (reshape),
glutMouseFunc (mouse);
glutMainLoop ();
return 0;}
Приклад програми, написаної на C, із застосуванням OpenGL.
Програма візуалізує обертовий куб. На куб накладені текстури, можливе включення альфа-прозорості під час візуалізації.
# include
# include
# include
int tex [1];
float xtr, ytr, ztr;
float rotx, roty, rotz;
float LightAmbient [] = {0.5f, 0.5f, 0.5f, 1.0f};
float LightPosition [] = {0.0f, 0.0f, 5.0f, 1.0f} ;//позиція освітлення
float LightDiffuse [] = {1.0f, 1.0f, 1.0f, 1.0f};// розсіювання
void LoadTexs ()// ініціалізація і завантаження текстур
{
AUX_RGBImageRec * tex1;
tex1 = auxDIBImageLoad ("droy.bmp");
glGenTextures (1, & tex [0]);
glBindTexture (GL_TEXTURE_2D, tex [0]);
glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR),
glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexImage2D (GL_TEXTURE_2D, 0, 3, tex1-> sizeX, tex1-> sizeY, 0,
GL_RGB, GL_UNSIGNED_BYTE, tex1-> data);
}
void init ()
{
LoadTexs () ;//процедура завантаження текстури
glColor4f (1.0f, 1.0f, 1.0f, 0.5f);
glBlendFunc (GL_SRC_ALPHA, GL_ONE);// параметри змішування
glEnable (GL_TEXTURE_2D);
glClearColor (0.0, 0.0, 0.0, 0.0) ;//колір фону
glClearDepth (1.0);
glDepthFunc (GL_LESS);
glEnable (GL_DEPTH_TEST);// тест глибини
glShadeModel (GL_SMOOTH);
glTranslatef (0.0f, 0.0f,-5.0f);
glLightfv (GL_LIGHT1, GL_AMBIENT, LightAmbient);// Параметри освітлення
glLightfv (GL_LIGHT1, GL_POSITION, LightPosition);
glLightfv (GL_LIGHT1, GL_DIFFUSE, LightDiffuse); br/>
glEnable (GL_LIGHT1) ;//освітлення
glEnable (GL_LIGHTING);
glEnable (GL_COLOR_MATERIAL);
glColorMaterial (GL_FRONT, GL_AMBIENT_AND_DIFFUSE);
}
void display (void)
{
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) ;//очищення буфера глибини
glPushMatrix () ;//збереження матриці
glTranslatef (xtr, ytr, ztr);
glRotatef (rotx, 1.0,0.0,0.0);
glRotatef (roty, 0.0,1.0,0.0),
glRotatef (rotz, 0.0,0.0,1.0);
glBegin (GL_QUADS);
glNormal3f (0.0f, 0.0f, 1.0f) ;//Передня грань
glTexCoord2f (0.0f, 0.0f); glVertex3f (-1.0f, -1.0f, 1.0f);// Низ лево
glTexCoord2f (1.0f, 0.0f); glVertex3f (1.0f, -1.0f, 1.0f);// Низ право
glTexCoord2f (1.0f, 1.0f), glVertex3f (1.0f, 1.0f, 1.0f);// Верх право
glTexCoord2f (0.0f, 1.0f); glVertex3f (-1.0f, 1.0f, 1.0f);// Верх ліво
glNormal3f (0.0f, 0.0f,-1.0f) ;//Задня грань
glTexCoord2f (1.0f, 0.0f); glVertex3f (-1.0f, -1.0f,-1.0f);// Низ право
glTexCoord2f (1.0f, 1.0f); glVertex3f (-1.0f, 1.0f,-1.0f);// Верх право
glTexCoord2f (0.0f, 1.0f); glVertex3f (1.0f, 1.0f,-1.0f);// Верх ліво
glTexCoord2f (0.0f, 0.0f); glVertex3f (1.0f, -1.0f,-1.0f);// Низ ліво
glNormal3f (0.0f, 1.0f, 0.0f) ;//Верхня грань
glTexCoord2f (0.0f, 1.0f); glVertex3f (-1.0f, 1.0f,-1.0f);// Верх ліво
glTexCoord2f (0.0f, 0.0f); glVertex3f (-1.0f, 1.0f, 1.0f);// Низ лево
glTexCoord2f (1.0f, 0.0f); glVertex3f (1.0f, 1.0f, 1.0f);// Низ право
glTexCoord2f (1.0f, 1.0f); glVertex3f (1.0f, 1.0f,-1.0f);// Верх право
glNormal3f (0.0f,-1.0f, 0.0f) ;//Нижня грань
glTexCoord2f (1.0f, 1.0f); glVertex3f (-1.0f, -1.0f,-1.0f);// Верх право
glTexCoord2f (0.0f, 1.0f); glVertex3f (1.0f, -1.0f,-1.0f);// Верх ліво
glTexCoord2f (0.0f, 0.0f); glVertex3f (1.0f, -1.0f, 1.0f);// Низ ліво
glTexCoord2f (1.0f, 0.0f), glVertex3f (-1.0f, -1.0f, 1.0f);// Низ право
glNormal3f (1.0f, 0.0f, 0.0f) ;//Права грань
glTexCoord2f (1.0f, 0.0f); glVertex3f (1.0f, -1.0f,-1.0f);// Низ право
glTexCoord2f (1.0f, 1.0f); glVertex3f (1.0f, 1.0f,-1.0f);// Верх право
glTexCoord2f (0.0f, 1.0f); glVertex3f (1.0f, 1.0f, 1.0f);// Верх ліво
glTexCoord2f (0.0f, 0.0f); glVertex3f (1.0f, -1.0f, 1.0f);// Низ ліво
glNormal3f (-1.0f, 0.0f, 0.0f) ;//Ліва грань
glTexCoord2f (0.0f, 0.0f); glVertex3f (-1.0f, -1.0f,-1.0f);// Низ ліво
glTexCoord2f (1.0f, 0.0f), glVertex3f (-1.0f, -1.0f, 1.0f);// Низ право
glTexCoord2f (1.0f, 1.0f); glVertex3f (-1.0f, 1.0f, 1.0f);// Верх право
glTexCoord2f (0.0f, 1.0f); glVertex3f (-1.0f, 1.0f,-1.0f);// Верх ліво
glEnd ();
glPopMatrix () ;//виклик матриці
rotx + = 0.2 ;//обер...