Войти

Показать полную графическую версию : OpenGL и материалы


veter48
20-04-2012, 16:18
Здравствуйте. Есть программа:

#include <GL/glut.h>

static int kv= 1;
static int kd = 1;

void reshape(int w, int h)
{
glViewport(0, 0, w, h);

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0, w, 0, h);

glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}

static void key(unsigned char key, int x, int y)
{
switch (key)
{
case 27 :
case 'q':
exit(0);
break;

case '+':
if (kv < 75 & kd < 75)
{
kv += 1;
kd += 1;
}
break;

case '-':
if (kv > -5 & kd > -5)
{
kv -= 1;
kd -= 1;
}
break;
}

glutPostRedisplay();
}


void display()
{

glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glClear(GL_COLOR_BUFFER_BIT);

glBegin(GL_POLYGON);
glColor3f(0.0, 0.0, 1.0);
glVertex2i(150 - kv,300);
glVertex2i(200, 250-kv);
glVertex2i(300+kv, 300);
glVertex2i(275, 350+kv);
glVertex2i(200, 350+kv);
glEnd();



glBegin(GL_POLYGON);
glColor3f(0.0, 0.0, 1.0);
glVertex2i(450-kd, 300);
glColor3f(0.0, 1.0, 0.0);
glVertex2i(500, 250-kd);
glColor3f(1.0, 0.0, 1.0);
glVertex2i(600, 250-kd);
glColor3f(1.0, 1.0, 0.0);
glVertex2i(610+kd,260);
glColor3f(1.5, 0.5, 0);
glVertex2i(575, 350+kd);
glColor3f(0.0, 1.0, 1.0);
glVertex2i(500, 350+kd);

glEnd();

glutSwapBuffers();
}



int main (int argc, char * argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE);
glutInitWindowSize(800, 600);
glutInitWindowPosition(100,100);
glutCreateWindow("Lab Darbs1");
glutKeyboardFunc(key);
glClearColor(1,1,1,1);

glutReshapeFunc(reshape);
glutDisplayFunc(display);

glutMainLoop();

return 0;
}

И надо сделать так чтоб многоугольники выглядели как стекло. Помогите хоть как начать.

asidorchenko
28-04-2012, 03:06
Может, сперва нужно в графическом редакторе типа Paint создать текстуру, напоминающую стекло, и наложить ее на многоугольник. Работа с графическим редкатором - это очень важная часть работы при программировании графики.




© OSzone.net 2001-2012