gldrawelements // AppGL.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include #define GLEW_STATIC #include #include "SDL.h" #include "SDL_opengl.h" gldrawelements PasteShr gldrawelements int _tmain(int argc, _TCHAR* argv[]) { /* Vertex Shader Code */ const GLchar* VertexShaderCode = "#version 150 \n" "in vec2 position;" "in vec3 color;" "out vec3 Color;" "void main()" "{" gldrawelements How to dowload it? gldrawelements " Color = color;" " gl_Position = vec4(position, 0.0, 1.0);" "}"; /* Fragment Shader Code */ const GLchar* FragmentShaderCode = "#version 150 \n" "in vec3 Color;" "out vec4 outColor;" "void main()" "{" gldrawelements How to get it? gldrawelements "outColor = vec4(Color, 1.0);" "}"; /* Initializing SDL */ SDL_Init(SDL_INIT_EVERYTHING); SDL_Window* window = SDL_CreateWindow("OpenGL", 100, 100, 800, 600, SDL_WINDOW_OPENGL); SDL_GLContext context = SDL_GL_CreateContext(window); gldrawelements How to dowload it? gldrawelements /* Initializin GLEW */ glewExperimental = GL_TRUE; glewInit(); float vertices[] = { -0.5f, 0.5f, 1.0f, 0.0f, 0.0f, // Top-left 0.5f, 0.5f, 0.0f, 1.0f, 0.0f, // Top-right 0.5f, -0.5f, 0.0f, 0.0f, 1.0f, // Bottom-right -0.5f, -0.5f, 1.0f, 1.0f, 1.0f // Bottom-left }; gldrawelements How to get it for free? gldrawelements GLuint elements[] = { 0, 1, 2, 2, 3, 0 }; // Vertex Buffer Object VBO GLuint vbo; gldrawelements PasteShr gldrawelements glGenBuffers(1, &vbo); glBindBuffer(GL_ARRAY_BUFFER, vbo); glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW); // Elements Buffer Object EBO GLuint ebo; glGenBuffers(1, &ebo); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ebo); glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(elements), elements, GL_STATIC_DRAW); gldrawelements How to get it? gldrawelements // Vertex Array Object VAO GLuint vao; glGenVertexArrays(1, &vao); glBindVertexArray(vao); /* Create and Compile Vertex Shader */ GLuint vertexShader = glCreateShader(GL_VERTEX_SHADER); glShaderSource(vertexShader, 1, &VertexShaderCode, NULL); glCompileShader(vertexShader); gldrawelements PasteShr gldrawelements GLint status; glGetShaderiv(vertexShader, GL_COMPILE_STATUS, &status); if(status != GL_TRUE) printf("Vertex Shader Compilation Failed!\n"); /* Create and Compile Fragment Shader */ GLuint fragmentShader = glCreateShader(GL_FRAGMENT_SHADER); glShaderSource(fragmentShader, 1, &FragmentShaderCode, NULL); glCompileShader(fragmentShader); gldrawelements How to dowload it? gldrawelements glGetShaderiv(fragmentShader, GL_COMPILE_STATUS, &status); if(status != GL_TRUE) printf("Fragment Shader Compilation Failed!\n"); /* Create Shader Program */ GLuint shaderProgram = glCreateProgram(); glAttachShader(shaderProgram, vertexShader); glAttachShader(shaderProgram, fragmentShader); gldrawelements How to use it? gldrawelements glBindFragDataLocation(shaderProgram, 0, "outColor"); glLinkProgram(shaderProgram); glUseProgram(shaderProgram); GLint posAttrib = glGetAttribLocation(shaderProgram, "position"); glVertexAttribPointer(posAttrib, 2, GL_FLOAT, GL_FALSE, 5*sizeof(float), 0); glEnableVertexAttribArray(posAttrib); GLint colAttrib = glGetAttribLocation(shaderProgram, "color"); gldrawelements PasteShr gldrawelements glVertexAttribPointer(colAttrib, 3, GL_FLOAT, GL_FALSE, 5*sizeof(float), (void*)(2*sizeof(float))); glEnableVertexAttribArray(colAttrib); SDL_Event windowEvent; while (true) { if (SDL_PollEvent(&windowEvent)) { if (windowEvent.type == SDL_QUIT) break; gldrawelements How to get it for free? gldrawelements if (windowEvent.type == SDL_KEYUP && windowEvent.key.keysym.sym == SDLK_ESCAPE) break; } //glDrawArrays(GL_TRIANGLES, 0, 3); glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, elements); SDL_GL_SwapWindow(window); } /* Clear Everything */ gldrawelements How to get it for free? gldrawelements glDeleteProgram(shaderProgram); glDeleteShader(fragmentShader); glDeleteShader(vertexShader); //glDeleteBuffers(1, &ebo); glDeleteBuffers(1, &vbo); glDeleteVertexArrays(1, &vao); SDL_GL_DeleteContext(context); gldrawelements How to get it? gldrawelements SDL_Quit(); return 0; } gldrawelements