Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void windowSizeCallback(int width, int height)
- {
- glViewport(0, 0, width, height);
- }
- int main()
- {
- if (!glfwInit()) {
- std::cout << "Couldn't initialize GLFW\n";
- return 1;
- }
- if (!glfwOpenWindow(400, 300, 0, 0, 0, 0, 0, 0, GLFW_WINDOW)) {
- std::cout << "Couldn't open window\n";
- return 1;
- }
- if (glewInit() != GLEW_OK) {
- std::cout << "Couldn't initialize glew\n";
- return 1;
- }
- glfwSetWindowTitle("Test");
- glfwSetWindowSizeCallback(windowSizeCallback);
- glfwOpenWindowHint(GLFW_OPENGL_VERSION_MAJOR, 4);
- glfwOpenWindowHint(GLFW_OPENGL_VERSION_MINOR, 0);
- glfwOpenWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
- const char* vertexShaderSource =
- "#version 330\n"
- "in vec4 inPosition;\n"
- "in vec4 inColor;\n"
- "out vec4 vertexColor;\n"
- "void main()\n"
- "{\n"
- " vertexColor = inColor;\n"
- " gl_Position = inPosition;\n"
- "}";
- const char* fragmentShaderSource =
- "#version 330\n"
- "in vec4 vertexColor;\n"
- "out vec4 fragColor;\n"
- "void main()\n"
- "{\n"
- " fragColor = vertexColor;\n"
- " //fragColor = vec4(1.0, 1.0, 1.0, 1.0);\n"
- "}";
- GLuint vertexShader(glCreateShader(GL_VERTEX_SHADER))
- , fragmentShader(glCreateShader(GL_FRAGMENT_SHADER))
- , shaderProgram(glCreateProgram());
- glShaderSource(vertexShader, 1, &vertexShaderSource, 0);
- glCompileShader(vertexShader);
- glShaderSource(fragmentShader, 1, &fragmentShaderSource, 0);
- glCompileShader(fragmentShader);
- glAttachShader(shaderProgram, vertexShader);
- glAttachShader(shaderProgram, fragmentShader);
- glLinkProgram(shaderProgram);
- GLuint positionLoc(glGetAttribLocation(shaderProgram, "inPosition"))
- , colorLoc(glGetAttribLocation(shaderProgram, "inColor"));
- float positionData[] =
- { -0.5, -0.5, 0.0, 1.0
- , 0.5, -0.5, 0.0, 1.0
- , -0.5, 0.5, 0.0, 1.0
- , 0.5, 0.5, 0.0, 1.0
- };
- float colorData [] =
- { 1.0, 1.0, 1.0, 1.0
- , 1.0, 1.0, 1.0, 1.0
- , 1.0, 1.0, 1.0, 1.0
- , 1.0, 1.0, 1.0, 1.0
- };
- GLuint vao, positionBuffer, colorBuffer;
- glGenBuffers(1, &positionBuffer);
- glGenBuffers(1, &colorBuffer);
- glGenVertexArrays(1, &vao);
- glBindVertexArray(vao);
- glEnableVertexAttribArray(positionLoc);
- glBindBuffer(GL_ARRAY_BUFFER, positionBuffer);
- glBufferData(GL_ARRAY_BUFFER, sizeof(positionData), positionData, GL_STATIC_DRAW);
- glVertexAttribPointer(positionLoc, 4, GL_FLOAT, GL_FALSE, 0, 0);
- glBindBuffer(GL_ARRAY_BUFFER, 0);
- glEnableVertexAttribArray(colorLoc);
- glBindBuffer(GL_ARRAY_BUFFER, colorBuffer);
- glBufferData(GL_ARRAY_BUFFER, sizeof(colorData), colorData, GL_STATIC_DRAW);
- glVertexAttribPointer(colorLoc, 4, GL_FLOAT, GL_FALSE, 0, 0);
- glBindBuffer(GL_ARRAY_BUFFER, 0);
- //glBindVertexArray(0);
- glClearColor(0.5, 0.5, 0.5, 1.0);
- // Main loop
- while (true) {
- glClear(GL_COLOR_BUFFER_BIT);
- //glBindVertexArray(vao);
- glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
- //glBindVertexArray(0);
- glfwSwapBuffers();
- if (glfwGetKey(GLFW_KEY_ESC) || !glfwGetWindowParam(GLFW_OPENED)) {
- break;
- }
- }
- glfwTerminate();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement