Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma comment(lib, "glaux.lib")
- #include <Windows.h>
- #include <math.h>
- #include <gl\GL.h>
- #include <GL\GLU.h>
- #include <glut.h>
- #include <glaux.h>
- #include <stdio.h>
- const int WinW = 1200;
- const int WinH = 1000;
- const int s = 4;
- unsigned int textures[8];
- GLfloat vertices[][3] = {
- { -0.1 * s / 2.0, -0.1 * s / 2.0, -0.1 * s / 2.0 },// 0
- { 0.1 * s / 2.0, -0.1 * s / 2.0, -0.1 * s / 2.0 },// 1
- { 0.1 * s / 2.0, 0.1 * s / 2.0, -0.1 * s / 2.0 },// 2
- { -0.1 * s / 2.0, 0.1 * s / 2.0, -0.1 * s / 2.0 },// 3
- { -0.1 * s / 2.0, -0.1 * s / 2.0, 0.1 * s / 2.0 },// 4
- { 0.1 * s / 2.0, -0.1 * s / 2.0, 0.1 * s / 2.0 },// 5
- { 0.1 * s / 2.0, 0.1 * s / 2.0, 0.1 * s / 2.0 },// 6
- { -0.1 * s / 2.0, 0.1 * s / 2.0, 0.1 * s / 2.0 } // 7
- };
- void polygon(int a, int b, int c, int d, int i)
- {
- glBegin(GL_POLYGON);
- glTexCoord2d(0, 0); glVertex3fv(vertices[a]);
- glTexCoord2d(-1, 0); glVertex3fv(vertices[b]);
- glTexCoord2d(-1, -1); glVertex3fv(vertices[c]);
- glTexCoord2d(0, -1); glVertex3fv(vertices[d]);
- glEnd();
- }
- void colorcube()
- {
- polygon(1, 2, 6, 5, 0);
- polygon(0, 1, 2, 3, 1);
- polygon(0, 1, 5, 4, 2);
- polygon(2, 3, 7, 6, 3);
- polygon(4, 5, 6, 7, 4);
- polygon(0, 3, 7, 4, 5);
- }
- void loadTextures()
- {
- AUX_RGBImageRec * texture1 = auxDIBImageLoadA("photo.bmp");
- glGenTextures(1, &textures[0]);
- glBindTexture(GL_TEXTURE_2D, textures[0]);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- glTexImage2D(GL_TEXTURE_2D, 0, 2, texture1->sizeX, texture1->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, texture1->data);
- AUX_RGBImageRec *texture2 = auxDIBImageLoadA("photo.bmp");
- glGenTextures(1, &textures[1]);
- glBindTexture(GL_TEXTURE_2D, textures[1]);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- glTexImage2D(GL_TEXTURE_2D, 0, 2, texture2->sizeX, texture2->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, texture2->data);
- AUX_RGBImageRec *texture3 = auxDIBImageLoadA("photo2.bmp");
- glGenTextures(1, &textures[2]);
- glBindTexture(GL_TEXTURE_2D, textures[2]);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- glTexImage2D(GL_TEXTURE_2D, 0, 2, texture3->sizeX, texture3->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, texture3->data);
- AUX_RGBImageRec *texture4 = auxDIBImageLoadA("photo3.bmp");
- glGenTextures(1, &textures[3]);
- glBindTexture(GL_TEXTURE_2D, textures[3]);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- glTexImage2D(GL_TEXTURE_2D, 0, 2, texture4->sizeX, texture4->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, texture4->data);
- AUX_RGBImageRec *texture5 = auxDIBImageLoadA("photo4.bmp");
- glGenTextures(1, &textures[4]);
- glBindTexture(GL_TEXTURE_2D, textures[4]);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- glTexImage2D(GL_TEXTURE_2D, 0, 2, texture5->sizeX, texture5->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, texture5->data);
- AUX_RGBImageRec *texture6 = auxDIBImageLoadA("photo5.bmp");
- glGenTextures(1, &textures[5]);
- glBindTexture(GL_TEXTURE_2D, textures[5]);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- glTexImage2D(GL_TEXTURE_2D, 0, 2, texture6->sizeX, texture6->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, texture6->data);
- AUX_RGBImageRec *texture7 = auxDIBImageLoadA("photo6.bmp");
- glGenTextures(1, &textures[6]);
- glBindTexture(GL_TEXTURE_2D, textures[6]);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- glTexImage2D(GL_TEXTURE_2D, 0, 2, texture7->sizeX, texture7->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, texture7->data);
- }
- void initializeWindow(){
- glClearColor(0, 0, 0, 1);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- gluOrtho2D(-4, 4, -4, 4);
- loadTextures();
- }
- void draw(){
- glClear(GL_COLOR_BUFFER_BIT);
- glEnable(GL_TEXTURE_2D);
- glBindTexture(GL_TEXTURE_2D, textures[0]);
- glBegin(GL_QUADS);
- glTexCoord2d(0, 0); glVertex3d(-4, 0, -0.1);
- glTexCoord2d(-1, 0); glVertex3d(-2, 0, -0.1);
- glTexCoord2d(-1, -1); glVertex3d(-2, -2, -0.1);
- glTexCoord2d(0, -1); glVertex3d(-4, -2, -0.1);
- glEnd();
- glutSwapBuffers();
- glDisable(GL_TEXTURE_2D);
- //вывели изображение
- }
- void cube()
- {
- glTranslatef(0, 3, 0);
- glEnable(GL_TEXTURE_2D);
- glBindTexture(GL_TEXTURE_2D, textures[1]);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- glViewport(WinW / 2, WinH / 2, WinW / 2, WinH / 2);
- glRotatef(160, 35, 36, 0);
- colorcube();
- glLoadIdentity();
- glutSwapBuffers();
- glDisable(GL_TEXTURE_2D);
- }
- void good_cube()
- {
- glTranslatef(-3, 0, 0);
- glEnable(GL_TEXTURE_2D);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- glViewport(WinW / 2, WinH / 2, WinW / 2, WinH / 2);
- glRotatef(160, 35, 36, 0);
- glBindTexture(GL_TEXTURE_2D, textures[2]);
- glBegin(GL_POLYGON);
- glTexCoord2d(0, 0); glVertex3fv(vertices[1]);
- glTexCoord2d(-1, 0); glVertex3fv(vertices[2]);
- glTexCoord2d(-1, -1); glVertex3fv(vertices[6]);
- glTexCoord2d(0, -1); glVertex3fv(vertices[5]);
- glEnd();
- glBindTexture(GL_TEXTURE_2D, textures[3]);
- glBegin(GL_POLYGON);
- glTexCoord2d(0, 0); glVertex3fv(vertices[0]);
- glTexCoord2d(-1, 0); glVertex3fv(vertices[1]);
- glTexCoord2d(-1, -1); glVertex3fv(vertices[2]);
- glTexCoord2d(0, -1); glVertex3fv(vertices[3]);
- glEnd();
- glBindTexture(GL_TEXTURE_2D, textures[4]);
- glBegin(GL_POLYGON);
- glTexCoord2d(0, 0); glVertex3fv(vertices[0]);
- glTexCoord2d(-1, 0); glVertex3fv(vertices[1]);
- glTexCoord2d(-1, -1); glVertex3fv(vertices[5]);
- glTexCoord2d(0, -1); glVertex3fv(vertices[4]);
- glEnd();
- glBindTexture(GL_TEXTURE_2D, textures[5]);
- glBegin(GL_POLYGON);
- glTexCoord2d(0, 0); glVertex3fv(vertices[2]);
- glTexCoord2d(-1, 0); glVertex3fv(vertices[3]);
- glTexCoord2d(-1, -1); glVertex3fv(vertices[7]);
- glTexCoord2d(0, -1); glVertex3fv(vertices[6]);
- glEnd();
- glBindTexture(GL_TEXTURE_2D, textures[6]);
- glBegin(GL_POLYGON);
- glTexCoord2d(0, 0); glVertex3fv(vertices[4]);
- glTexCoord2d(-1, 0); glVertex3fv(vertices[5]);
- glTexCoord2d(-1, -1); glVertex3fv(vertices[6]);
- glTexCoord2d(0, -1); glVertex3fv(vertices[7]);
- glEnd();
- glBindTexture(GL_TEXTURE_2D, textures[6]);
- glBegin(GL_POLYGON);
- glTexCoord2d(0, 0); glVertex3fv(vertices[0]);
- glTexCoord2d(-1, 0); glVertex3fv(vertices[3]);
- glTexCoord2d(-1, -1); glVertex3fv(vertices[7]);
- glTexCoord2d(0, -1); glVertex3fv(vertices[4]);
- glEnd();
- glLoadIdentity();
- glutSwapBuffers();
- glDisable(GL_TEXTURE_2D);
- }
- void display(void)
- {
- glutDisplayFunc(draw);
- glutDisplayFunc(cube);//работает только одна из них
- //glutDisplayFunc(good_cube);
- }
- int main(int argc, char** argv){
- glutInit(&argc, argv);
- glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
- glutInitWindowSize(WinW, WinH);
- glutInitWindowPosition(250, 100);
- glutCreateWindow("LAB5");
- glutDisplayFunc(display);
- initializeWindow();
- glutMainLoop();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement