Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define SDL_MAIN_HANDLED
- #include <SDL2/SDL.h>
- #include <GL/glew.h>
- #include <GL/glu.h>
- #include <GL/gl.h>
- #include <string>
- SDL_Window* window;
- void createWindow() {
- auto pos = SDL_WINDOWPOS_UNDEFINED;
- auto flag = SDL_WINDOW_OPENGL;
- window = SDL_CreateWindow("OpenGL",pos,pos,800,600,flag);
- SDL_GL_CreateContext(window);
- glewInit();
- }
- int main(int argc, char* argv[]) {
- createWindow();
- float positions[6] = {
- -1.0f,-1.0f,
- 0.0f,1.0f,
- 1.0f,-1.0f
- };
- GLuint vbo;
- glGenBuffers(1,&vbo);
- glBindBuffer(GL_ARRAY_BUFFER,vbo);
- glBufferData(GL_ARRAY_BUFFER,sizeof(positions), positions, GL_STATIC_DRAW);
- const char* vertexShaderSource {
- "#version 150 core;"
- "in vec2 position;"
- "void main() {"
- "gl_Position = vec4(position,0.,1.);"
- "}"
- };
- const char* fragmentShaderSource {
- "#version 150 core;"
- "out vec4 outColor;"
- "void main() {"
- "outColor = vec4(1.);"
- "}"
- };
- //Create the vertex shader program
- GLuint vertexShader = glCreateShader(GL_VERTEX_SHADER);
- glShaderSource(vertexShader,1,&vertexShaderSource,0);
- glCompileShader(vertexShader);
- //Create the fragment shader program
- GLuint fragmentShader = glCreateShader(GL_FRAGMENT_SHADER);
- glShaderSource(fragmentShader,1,&fragmentShaderSource,0);
- glCompileShader(fragmentShader);
- //Create the main program
- GLuint shaderProgram = glCreateProgram();
- glAttachShader(shaderProgram,vertexShader);
- glAttachShader(shaderProgram,fragmentShader);
- glBindFragDataLocation(shaderProgram, 0, "outColor");
- //Link, and then tell OpenGL to use it
- glLinkProgram(shaderProgram);
- glUseProgram(shaderProgram);
- glCompileShader(shaderProgram);
- GLint posAttrib = glGetAttribLocation(shaderProgram, "position");
- glVertexAttribPointer(posAttrib, 2, GL_FLOAT, GL_FALSE, 0, 0);
- glEnableVertexAttribArray(posAttrib);
- GLuint vao;
- glGenVertexArrays(1, &vao);
- glBindVertexArray(vao);
- bool running = true;
- while(running) {
- SDL_Event event;
- while(SDL_PollEvent(&event)) {
- if(event.type == SDL_QUIT)
- running = false;
- }
- glClear(GL_COLOR_BUFFER_BIT);
- glDrawArrays(GL_TRIANGLES, 0, 3);
- SDL_GL_SwapWindow(window);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement