Advertisement
Niven

Texture

Nov 20th, 2012
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.42 KB | None | 0 0
  1. #include <GL/glut.h>
  2. #include <SDL_Image.h>
  3.  
  4. void drawScene();
  5. void handleResize(int w,int h);
  6.  
  7. GLuint TextureID;
  8.  
  9. SDL_Surface *Image = IMG_Load("cb.png");
  10.  
  11. void initRendering() {
  12.     glDisable(GL_DEPTH_TEST);
  13.     glGetError();
  14.     glEnable(GL_NORMALIZE);
  15.     glGetError();
  16.     glEnable(GL_COLOR_MATERIAL);
  17.     glGetError();
  18.     glEnable(GL_TEXTURE_2D);
  19.     glGetError();
  20.     glEnable(GL_BLEND);
  21.     glMatrixMode(GL_PROJECTION);
  22.     glGetError();
  23.     glLoadIdentity();
  24.     glGetError();
  25.  
  26.     glClearColor(0,0,0,1);
  27.     glGetError();
  28. }
  29.  
  30. void Texture(SDL_Surface *Surface)
  31. {
  32.     glGenTextures(1, &TextureID);
  33.     glGetError();
  34.     glBindTexture(GL_TEXTURE_2D, TextureID);
  35.     glGetError();
  36.  
  37.     GLint Mode = GL_RGB;
  38.  
  39.     if(Surface->format->BytesPerPixel == 4) {
  40.         Mode = GL_RGBA;
  41.     }
  42.  
  43.     glGetError();
  44.     glGetError();
  45.  
  46.     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
  47.     glGetError();
  48.     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
  49.     glGetError();
  50.  
  51.     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
  52.     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
  53.  
  54.     glTexImage2D(GL_TEXTURE_2D, 0, Mode, Surface->w, Surface->h, 0, Mode, GL_UNSIGNED_BYTE, Surface->pixels);
  55. }
  56.  
  57. int main(int argc, char** argv) {
  58.     glutInit(&argc, argv);
  59.     glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
  60.     glutInitWindowSize(400, 400);
  61.  
  62.     glutCreateWindow("Textures - SLD & OpenGL");
  63.     initRendering();
  64.     Texture(Image);
  65.  
  66.     glutDisplayFunc(drawScene);
  67.     //glutKeyboardFunc(handleKeypress);
  68.     glutReshapeFunc(handleResize);
  69.  
  70.     glutMainLoop();
  71.     return 0;
  72. }
  73.  
  74. void handleResize(int w,int h)
  75. {
  76.     glViewport (0, 0, (GLsizei) w, (GLsizei) h);
  77.     glMatrixMode (GL_PROJECTION);
  78.     glLoadIdentity();
  79.     gluOrtho2D (0, (GLdouble) w, 0, (GLdouble) h);
  80. }
  81.  
  82. void drawScene() {
  83.     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  84.     glGetError();
  85.  
  86.     glMatrixMode(GL_MODELVIEW);
  87.     glGetError();
  88.     glLoadIdentity();
  89.     glGetError();
  90.  
  91.  
  92.     // For Ortho mode, of course
  93.     int X = 150;
  94.     int Y = 150;
  95.     int Width = 100;
  96.     int Height = 100;
  97.  
  98.     glBegin(GL_QUADS);
  99.         glColor3f(1,1,1);
  100.         glTexCoord2f(0, 0); glVertex3f(X, Y, 0);
  101.         glTexCoord2f(1, 0); glVertex3f(X + Width, Y, 0);
  102.         glTexCoord2f(1, 1); glVertex3f(X + Width, Y + Height, 0);
  103.         glTexCoord2f(0, 1); glVertex3f(X, Y + Height, 0);
  104.     glEnd();
  105.  
  106.     glutSwapBuffers();
  107. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement