Advertisement
Guest User

Untitled

a guest
Apr 19th, 2018
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.19 KB | None | 0 0
  1. #pragma comment(lib, "glaux.lib")
  2.  
  3. #include <Windows.h>
  4. #include <math.h>
  5. #include <gl\GL.h>
  6. #include <GL\GLU.h>
  7. #include <glut.h>
  8. #include <glaux.h>
  9. #include <stdio.h>
  10.  
  11. const int WinW = 1200;
  12. const int WinH = 1000;
  13. const int s = 4;
  14. unsigned int textures[8];
  15.  
  16.  
  17. GLfloat vertices[][3] = {
  18.     { -0.1 * s / 2.0, -0.1 * s / 2.0, -0.1 * s / 2.0 },// 0
  19.     { 0.1 * s / 2.0, -0.1 * s / 2.0, -0.1 * s / 2.0 },// 1
  20.     { 0.1 * s / 2.0, 0.1 * s / 2.0, -0.1 * s / 2.0 },// 2
  21.     { -0.1 * s / 2.0, 0.1 * s / 2.0, -0.1 * s / 2.0 },// 3
  22.     { -0.1 * s / 2.0, -0.1 * s / 2.0, 0.1 * s / 2.0 },// 4
  23.     { 0.1 * s / 2.0, -0.1 * s / 2.0, 0.1 * s / 2.0 },// 5
  24.     { 0.1 * s / 2.0, 0.1 * s / 2.0, 0.1 * s / 2.0 },// 6
  25.     { -0.1 * s / 2.0, 0.1 * s / 2.0, 0.1 * s / 2.0 } // 7
  26. };
  27.  
  28.  
  29. void polygon(int a, int b, int c, int d, int i)
  30. {
  31.     glBegin(GL_POLYGON);
  32.     glTexCoord2d(0, 0); glVertex3fv(vertices[a]);
  33.     glTexCoord2d(-1, 0); glVertex3fv(vertices[b]);
  34.     glTexCoord2d(-1, -1); glVertex3fv(vertices[c]);
  35.     glTexCoord2d(0, -1); glVertex3fv(vertices[d]);
  36.     glEnd();
  37. }
  38. void colorcube()
  39. {
  40.     polygon(1, 2, 6, 5, 0);
  41.     polygon(0, 1, 2, 3, 1);
  42.     polygon(0, 1, 5, 4, 2);
  43.     polygon(2, 3, 7, 6, 3);
  44.     polygon(4, 5, 6, 7, 4);
  45.     polygon(0, 3, 7, 4, 5);
  46. }
  47.  
  48.  
  49. void loadTextures()
  50. {
  51.     AUX_RGBImageRec * texture1 = auxDIBImageLoadA("photo.bmp");
  52.     glGenTextures(1, &textures[0]);
  53.     glBindTexture(GL_TEXTURE_2D, textures[0]);
  54.     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
  55.     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
  56.     glTexImage2D(GL_TEXTURE_2D, 0, 2, texture1->sizeX, texture1->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, texture1->data);
  57.  
  58.     AUX_RGBImageRec *texture2 = auxDIBImageLoadA("photo.bmp");
  59.     glGenTextures(1, &textures[1]);
  60.     glBindTexture(GL_TEXTURE_2D, textures[1]);
  61.     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
  62.     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
  63.     glTexImage2D(GL_TEXTURE_2D, 0, 2, texture2->sizeX, texture2->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, texture2->data);
  64.  
  65.     AUX_RGBImageRec *texture3 = auxDIBImageLoadA("photo2.bmp");
  66.     glGenTextures(1, &textures[2]);
  67.     glBindTexture(GL_TEXTURE_2D, textures[2]);
  68.     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
  69.     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
  70.     glTexImage2D(GL_TEXTURE_2D, 0, 2, texture3->sizeX, texture3->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, texture3->data);
  71.  
  72.     AUX_RGBImageRec *texture4 = auxDIBImageLoadA("photo3.bmp");
  73.     glGenTextures(1, &textures[3]);
  74.     glBindTexture(GL_TEXTURE_2D, textures[3]);
  75.     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
  76.     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
  77.     glTexImage2D(GL_TEXTURE_2D, 0, 2, texture4->sizeX, texture4->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, texture4->data);
  78.  
  79.     AUX_RGBImageRec *texture5 = auxDIBImageLoadA("photo4.bmp");
  80.     glGenTextures(1, &textures[4]);
  81.     glBindTexture(GL_TEXTURE_2D, textures[4]);
  82.     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
  83.     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
  84.     glTexImage2D(GL_TEXTURE_2D, 0, 2, texture5->sizeX, texture5->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, texture5->data);
  85.  
  86.     AUX_RGBImageRec *texture6 = auxDIBImageLoadA("photo5.bmp");
  87.     glGenTextures(1, &textures[5]);
  88.     glBindTexture(GL_TEXTURE_2D, textures[5]);
  89.     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
  90.     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
  91.     glTexImage2D(GL_TEXTURE_2D, 0, 2, texture6->sizeX, texture6->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, texture6->data);
  92.  
  93.     AUX_RGBImageRec *texture7 = auxDIBImageLoadA("photo6.bmp");
  94.     glGenTextures(1, &textures[6]);
  95.     glBindTexture(GL_TEXTURE_2D, textures[6]);
  96.     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
  97.     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
  98.     glTexImage2D(GL_TEXTURE_2D, 0, 2, texture7->sizeX, texture7->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, texture7->data);
  99. }
  100.  
  101. void initializeWindow(){
  102.     glClearColor(0, 0, 0, 1);
  103.     glMatrixMode(GL_PROJECTION);
  104.     glLoadIdentity();
  105.     gluOrtho2D(-4, 4, -4, 4);
  106.     loadTextures();
  107. }
  108.  
  109. void draw(){
  110.     glClear(GL_COLOR_BUFFER_BIT);
  111.     glEnable(GL_TEXTURE_2D);
  112.     glBindTexture(GL_TEXTURE_2D, textures[0]);
  113.     glBegin(GL_QUADS);
  114.     glTexCoord2d(0, 0); glVertex3d(-4, 0, -0.1);
  115.     glTexCoord2d(-1, 0); glVertex3d(-2, 0, -0.1);
  116.     glTexCoord2d(-1, -1); glVertex3d(-2, -2, -0.1);
  117.     glTexCoord2d(0, -1); glVertex3d(-4, -2, -0.1);
  118.     glEnd();
  119.     glutSwapBuffers();
  120.     glDisable(GL_TEXTURE_2D);
  121. //вывели изображение
  122. }
  123.  
  124. void cube()
  125. {
  126.     glTranslatef(0, 3, 0);
  127.     glEnable(GL_TEXTURE_2D);
  128.     glBindTexture(GL_TEXTURE_2D, textures[1]);
  129.     glMatrixMode(GL_PROJECTION);
  130.     glLoadIdentity();
  131.     glViewport(WinW / 2, WinH / 2, WinW / 2, WinH / 2);
  132.     glRotatef(160, 35, 36, 0);
  133.     colorcube();
  134.     glLoadIdentity();
  135.     glutSwapBuffers();
  136.     glDisable(GL_TEXTURE_2D);
  137. }
  138.  
  139. void good_cube()
  140. {
  141.     glTranslatef(-3, 0, 0);
  142.     glEnable(GL_TEXTURE_2D);
  143.     glMatrixMode(GL_PROJECTION);
  144.     glLoadIdentity();
  145.     glViewport(WinW / 2, WinH / 2, WinW / 2, WinH / 2);
  146.     glRotatef(160, 35, 36, 0);
  147.  
  148.     glBindTexture(GL_TEXTURE_2D, textures[2]);
  149.     glBegin(GL_POLYGON);
  150.     glTexCoord2d(0, 0); glVertex3fv(vertices[1]);
  151.     glTexCoord2d(-1, 0); glVertex3fv(vertices[2]);
  152.     glTexCoord2d(-1, -1); glVertex3fv(vertices[6]);
  153.     glTexCoord2d(0, -1); glVertex3fv(vertices[5]);
  154.     glEnd();
  155.  
  156.     glBindTexture(GL_TEXTURE_2D, textures[3]);
  157.     glBegin(GL_POLYGON);
  158.     glTexCoord2d(0, 0); glVertex3fv(vertices[0]);
  159.     glTexCoord2d(-1, 0); glVertex3fv(vertices[1]);
  160.     glTexCoord2d(-1, -1); glVertex3fv(vertices[2]);
  161.     glTexCoord2d(0, -1); glVertex3fv(vertices[3]);
  162.     glEnd();
  163.  
  164.     glBindTexture(GL_TEXTURE_2D, textures[4]);
  165.     glBegin(GL_POLYGON);
  166.     glTexCoord2d(0, 0); glVertex3fv(vertices[0]);
  167.     glTexCoord2d(-1, 0); glVertex3fv(vertices[1]);
  168.     glTexCoord2d(-1, -1); glVertex3fv(vertices[5]);
  169.     glTexCoord2d(0, -1); glVertex3fv(vertices[4]);
  170.     glEnd();
  171.  
  172.     glBindTexture(GL_TEXTURE_2D, textures[5]);
  173.     glBegin(GL_POLYGON);
  174.     glTexCoord2d(0, 0); glVertex3fv(vertices[2]);
  175.     glTexCoord2d(-1, 0); glVertex3fv(vertices[3]);
  176.     glTexCoord2d(-1, -1); glVertex3fv(vertices[7]);
  177.     glTexCoord2d(0, -1); glVertex3fv(vertices[6]);
  178.     glEnd();
  179.  
  180.     glBindTexture(GL_TEXTURE_2D, textures[6]);
  181.     glBegin(GL_POLYGON);
  182.     glTexCoord2d(0, 0); glVertex3fv(vertices[4]);
  183.     glTexCoord2d(-1, 0); glVertex3fv(vertices[5]);
  184.     glTexCoord2d(-1, -1); glVertex3fv(vertices[6]);
  185.     glTexCoord2d(0, -1); glVertex3fv(vertices[7]);
  186.     glEnd();
  187.  
  188.     glBindTexture(GL_TEXTURE_2D, textures[6]);
  189.     glBegin(GL_POLYGON);
  190.     glTexCoord2d(0, 0); glVertex3fv(vertices[0]);
  191.     glTexCoord2d(-1, 0); glVertex3fv(vertices[3]);
  192.     glTexCoord2d(-1, -1); glVertex3fv(vertices[7]);
  193.     glTexCoord2d(0, -1); glVertex3fv(vertices[4]);
  194.     glEnd();
  195.  
  196.     glLoadIdentity();
  197.     glutSwapBuffers();
  198.     glDisable(GL_TEXTURE_2D);
  199. }
  200.  
  201. void  display(void)
  202. {
  203.     glutDisplayFunc(draw);
  204.     glutDisplayFunc(cube);//работает только одна из них
  205.     //glutDisplayFunc(good_cube);
  206. }
  207.  
  208.  
  209.  
  210. int main(int argc, char** argv){
  211.     glutInit(&argc, argv);
  212.     glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
  213.     glutInitWindowSize(WinW, WinH);
  214.     glutInitWindowPosition(250, 100);
  215.     glutCreateWindow("LAB5");
  216.  
  217.     glutDisplayFunc(display);
  218.  
  219.     initializeWindow();
  220.     glutMainLoop();
  221. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement