Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   OpenGL и материалы (http://forum.oszone.net/showthread.php?t=233228)

veter48 20-04-2012 16:18 1903253

OpenGL и материалы
 
Здравствуйте. Есть программа:
Код:

#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 1907100

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


Время: 18:47.

Время: 18:47.
© OSzone.net 2001-