#include #include #include #include #include using namespace std; void printShaderLog(GLuint shader) { int len = 0; int chWrittn = 0; char *log; glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &len); if (len > 0) { log = (char *) malloc(len); glGetShaderInfoLog(shader, len, &chWrittn, log); cout << "Shader Info Log: " << log << endl; free(log); } } void printProgramLog(int prog) { int len = 0; int chWrittn = 0; char *log; glGetProgramiv(prog, GL_INFO_LOG_LENGTH, &len); if (len > 0) { log = (char *) malloc(len); glGetProgramInfoLog(prog, len, &chWrittn, log); cout << "Program Info Log: " << log << endl; free(log); } } bool checkOpenGLError() { bool foundError = false; int glErr = glGetError(); while (glErr != GL_NO_ERROR) { cout << "glError : " << glErr << endl; foundError = true; glErr = glGetError(); } return foundError; } string readShaderSource(const char *filePath) { string content; ifstream fileStream(filePath, ios::in); string line = ""; while (!fileStream.eof()) { getline(fileStream, line); content.append(line + "\n"); } fileStream.close(); return content; } using namespace std; #define numVAOs 1 GLuint renderingProgram; GLuint vao[numVAOs]; float x = 0.0f; float inc = 0.01f; GLuint createShaderProgram() { const char *vshaderSource = readShaderSource("../tri.vert").c_str(); // const char *vshaderSource = "#version 430 \n" // "\n" // "void main(void)\n" // "{\n" // " if (gl_VertexID == 0) gl_Position = vec4( 0.25, -0.25, 0.0, 1.0);\n" // "else if (gl_VertexID == 1) gl_Position = vec4(-0.25, -0.25, 0.0, 1.0);\n" // " else gl_Position = vec4( 0.25, 0.25, 0.0, 1.0);}"; // cout< 1.0f) inc = -0.01f; // if (x < -1.0f) inc = 0.01f; // cout << x << endl;; // GLuint offsetLoc = glGetUniformLocation(renderingProgram, "offset"); // glProgramUniform1f(renderingProgram, offsetLoc, x); glDrawArrays(GL_TRIANGLES, 0, 3); } int main(void) { if (!glfwInit()) { exit(EXIT_FAILURE); } glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4); glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); GLFWwindow *window = glfwCreateWindow(600, 600, "GLAPP0", NULL, NULL); glfwMakeContextCurrent(window); if (glewInit() != GLEW_OK) { exit(EXIT_FAILURE); } glfwSwapInterval(1); init(window); checkOpenGLError(); while (!glfwWindowShouldClose(window)) { display(window, glfwGetTime()); glfwSwapBuffers(window); glfwPollEvents(); } glfwDestroyWindow(window); glfwTerminate(); exit(EXIT_SUCCESS); }