Uploaded by Korolev Michail

Lab1 add (1)

advertisement
Дополнительное задание к 1 л.р.
// Есть такой код:
int main(int argc, char* argv[ ]) {
glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH);
glutInitWindowSize( 512, 512);
glutInitWindowPosition(50, 10 );
glutCreateWindow(“tri”);
glClearColor(0,0,1,1.0);
glClearDepth(1.0);
glEnable(GL_DEPTH_TEST);
glEnable(GL_COLOR_MATERIAL);
glEnable(GL_LIGHTING); // light
glEnable(GL_LIGHT0);
float pos[4] = {0,0,100,1};
float dir[3] = {-1,-1,-1};
GLfloat mat_specular[ ] = {1,1,1,1};
glLightfv(GL_LIGHT0, GL_POSITION, pos);
glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, dir);
glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE);
glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, 38
128.0);
// продолжение
image = auxDIBImageLoad("t1.bmp"); // взять любой бмп
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glPixelZoom(1,1);
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture );
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,
GL_NEAREST);
gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGB, image->sizeX, image->sizeY,
GL_RGB, GL_UNSIGNED_BYTE, image->data);
glutReshapeFunc( reshape );
glutDisplayFunc(display);
glutKeyboardFunc(Keyboard);
glutMainLoop();
return 0;
}
39
Необходимо дополнить код возможностью использовать мышь
посредством функций:
glutMouseFunc(void (*func)(int button, int state, int x, int y));
glutMotionFunc(void (*func)(int x, int y));
Кроме того, надо получить из треугольника квадрат, выправить
наложение текстуры и добиться, чтобы этот квадрат вращался по нажатию
клавиши мыши вокруг выбранной вершины.
40
Download