Advertisement
Guest User

Untitled

a guest
Apr 26th, 2018
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.42 KB | None | 0 0
  1. #define SDL_MAIN_HANDLED
  2. #include <SDL2/SDL.h>
  3. #include <GL/glew.h>
  4. #include <GL/glu.h>
  5. #include <GL/gl.h>
  6. #include <string>
  7.  
  8. SDL_Window* window;
  9.  
  10. void createWindow() {
  11.     auto pos = SDL_WINDOWPOS_UNDEFINED;
  12.     auto flag = SDL_WINDOW_OPENGL;
  13.     window = SDL_CreateWindow("OpenGL",pos,pos,800,600,flag);
  14.     SDL_GL_CreateContext(window);
  15.     glewInit();
  16. }
  17.  
  18. int main(int argc, char* argv[]) {
  19.     createWindow();
  20.  
  21.     float positions[6] = {
  22.         -1.0f,-1.0f,
  23.         0.0f,1.0f,
  24.         1.0f,-1.0f
  25.     };
  26.  
  27.     GLuint vbo;
  28.     glGenBuffers(1,&vbo);
  29.     glBindBuffer(GL_ARRAY_BUFFER,vbo);
  30.     glBufferData(GL_ARRAY_BUFFER,sizeof(positions), positions, GL_STATIC_DRAW);
  31.  
  32.     const char* vertexShaderSource {
  33.         "#version 150 core;"
  34.         "in vec2 position;"
  35.         "void main() {"
  36.         "gl_Position = vec4(position,0.,1.);"
  37.         "}"
  38.     };
  39.  
  40.     const char* fragmentShaderSource {
  41.         "#version 150 core;"
  42.         "out vec4 outColor;"
  43.         "void main() {"
  44.         "outColor = vec4(1.);"
  45.         "}"
  46.     };
  47.  
  48.     //Create the vertex shader program
  49.     GLuint vertexShader = glCreateShader(GL_VERTEX_SHADER);
  50.     glShaderSource(vertexShader,1,&vertexShaderSource,0);
  51.     glCompileShader(vertexShader);
  52.  
  53.     //Create the fragment shader program
  54.     GLuint fragmentShader = glCreateShader(GL_FRAGMENT_SHADER);
  55.     glShaderSource(fragmentShader,1,&fragmentShaderSource,0);
  56.     glCompileShader(fragmentShader);
  57.  
  58.     //Create the main program
  59.     GLuint shaderProgram = glCreateProgram();
  60.     glAttachShader(shaderProgram,vertexShader);
  61.     glAttachShader(shaderProgram,fragmentShader);
  62.     glBindFragDataLocation(shaderProgram, 0, "outColor");
  63.  
  64.     //Link, and then tell OpenGL to use it
  65.     glLinkProgram(shaderProgram);
  66.     glUseProgram(shaderProgram);
  67.     glCompileShader(shaderProgram);
  68.  
  69.  
  70.  
  71.     GLint posAttrib = glGetAttribLocation(shaderProgram, "position");
  72.     glVertexAttribPointer(posAttrib, 2, GL_FLOAT, GL_FALSE, 0, 0);
  73.     glEnableVertexAttribArray(posAttrib);
  74.  
  75.  
  76.     GLuint vao;
  77.     glGenVertexArrays(1, &vao);
  78.     glBindVertexArray(vao);
  79.  
  80.     bool running = true;
  81.     while(running) {
  82.         SDL_Event event;
  83.         while(SDL_PollEvent(&event)) {
  84.             if(event.type == SDL_QUIT)
  85.                 running = false;
  86.         }
  87.  
  88.         glClear(GL_COLOR_BUFFER_BIT);
  89.         glDrawArrays(GL_TRIANGLES, 0, 3);
  90.         SDL_GL_SwapWindow(window);
  91.     }
  92.  
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement