SHARE
TWEET

Untitled

a guest Feb 21st, 2019 68 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <SDL/SDL.h>
  2. #include <SDL/SDL_image.h>
  3. #include <Windows.h>
  4. #include <gl/GL.h>
  5. #include <gl/GLU.h>
  6. #include <iostream>
  7.  
  8. #ifdef main
  9. #undef main
  10. #endif
  11.  
  12. #pragma comment (lib, "sdl.lib")
  13. #pragma comment (lib, "sdl_image.lib")
  14. #pragma comment (lib, "opengl32.lib")
  15. #pragma comment (lib, "glu32.lib")
  16.  
  17. #define degtorad(x) ((x)*(3.14159265/180.0))
  18.  
  19. int main () {
  20.  
  21.         SDL_Init (SDL_INIT_EVERYTHING);
  22.         IMG_Init (IMG_INIT_PNG);
  23.  
  24.         SDL_SetVideoMode (800, 600, 32, SDL_OPENGL);
  25.  
  26.         glViewport (0, 0, 800, 600);
  27.         glClearColor (1.f, 1.f, 1.f, 1.f);
  28.        
  29.         glMatrixMode (GL_PROJECTION);
  30.         glLoadIdentity ();
  31.         //glOrtho (0.f, 800.f, 600.f, 0.f, 0.f, 1.f);
  32.         gluPerspective (45.f, 800.f/600.f, 0.1f, 1000.f);
  33.  
  34.         glMatrixMode (GL_MODELVIEW);
  35.         glLoadIdentity ();
  36.  
  37.         glDisable (GL_DEPTH_TEST);
  38.  
  39.         //Set up texturing
  40.         SDL_Surface * textureData = IMG_Load ("hitlerwasfunny.png");
  41.         if(!textureData)
  42.             __debugbreak ();
  43.  
  44.         glEnable (GL_TEXTURE_2D);
  45.         //Nake it so that colors properly blend with textures
  46.         glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
  47.         GLuint textureObject;
  48.         //Creates the OpenGL texture object (this is what's actually rendered)
  49.         glGenTextures (1, &textureObject);
  50.         //Tell OpenGL that the texture we're going to work with is textureObject
  51.         glBindTexture (GL_TEXTURE_2D, textureObject);
  52.         // Texture coordinates aren't technically in (x,y) format, for some reason they're
  53.         //  called (u,v) instead. Configure OpenGL to clamp texture coordinates that are
  54.         //  out of bounds (less than 0, greater than 1) to the proper value
  55.         glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
  56.         glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
  57.         glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
  58.         glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
  59.         glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA, textureData->w, textureData->h, 0, GL_RGBA, GL_UNSIGNED_BYTE, textureData->pixels);
  60.  
  61.         glEnable (GL_BLEND);
  62.         glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
  63.  
  64.         float rotx = 0.f, roty = 0.f;
  65.         float posx = 0.f, posy = 0.f;
  66.  
  67.         bool quit = false;
  68.  
  69.         bool keyStates [SDLK_LAST];
  70.         ZeroMemory (keyStates, SDLK_LAST);
  71.  
  72.         while (!quit) {
  73.                 glLoadIdentity();
  74.  
  75.                 SDL_Event ev;
  76.                 SDL_PumpEvents ();
  77.                 while (SDL_PollEvent (&ev))
  78.                 {
  79.                         if (ev.type == SDL_QUIT)
  80.                                 quit = true;
  81.  
  82.                         if(ev.type == SDL_KEYDOWN)
  83.                         {
  84.                             keyStates [ev.key.keysym.sym] = true;
  85.                         }
  86.  
  87.                         if(ev.type == SDL_KEYUP)
  88.                         {
  89.                             keyStates [ev.key.keysym.sym] = false;
  90.                         }
  91.                 }
  92.  
  93.                 Sleep (16);
  94.                 glClear (GL_COLOR_BUFFER_BIT);
  95.  
  96.                 if (keyStates [SDLK_w])
  97.                     rotx -= 2.f;
  98.                 if (keyStates [SDLK_s])
  99.                     rotx += 2.f;
  100.                 if (keyStates [SDLK_a])
  101.                     roty -= 2.f;
  102.                 if (keyStates [SDLK_d])
  103.                     roty += 2.f;
  104.  
  105.                 float moveSpd = 0.2f;
  106.                 if (keyStates [SDLK_UP]) {
  107.                         posx += cosf (degtorad (roty + 90));
  108.                         posy += sinf (degtorad (roty + 90));
  109.                 }
  110.                 if (keyStates [SDLK_DOWN]) {
  111.                         posx += cosf (degtorad (roty + 270));
  112.                         posy += sinf (degtorad (roty + 270));
  113.                 }
  114.                 if (keyStates [SDLK_LEFT]) {
  115.                         posx += cosf (degtorad (roty + 0));
  116.                         posy += sinf (degtorad (roty + 0));
  117.                 }
  118.                 if (keyStates [SDLK_RIGHT]) {
  119.                         posx += cosf (degtorad (roty + 180));
  120.                         posy += sinf (degtorad (roty + 180));
  121.                 }
  122.  
  123.                 glRotatef (rotx, 1.f, 0.f, 0.f);
  124.                 glRotatef (roty, 0.f, 1.f, 0.f);
  125.                 glTranslatef (posx, 0.f, posy);
  126.  
  127.                 glBegin (GL_TRIANGLES);
  128.                         glColor3f (1.f, 0.f, 0.f);
  129.  
  130.                         glTexCoord2f(0.f,1.f);
  131.                         glVertex3f (-10.f,  -1.f, 10.f);
  132.  
  133.                         glTexCoord2f(0.f,0.f);
  134.                         glVertex3f (-10.f,  -1.f, -10.f);
  135.  
  136.                         glTexCoord2f(1.f,0.f);
  137.                         glVertex3f (10.f,  -1.f, -10.f);
  138.  
  139.                         glTexCoord2f(1.f,1.f);
  140.                         glVertex3f (10.f, -1.f, -10.f);
  141.                 glEnd ();
  142.  
  143.                 SDL_GL_SwapBuffers ();
  144.         }
  145.  
  146.         return 0;
  147. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top