Witam!
Oto mój program:
#define GLEW_STATIC
#include <GL/glew.h>
#include <GL/gl.h>
#include <GLFW/glfw3.h>
#include <stdio.h>
#include <cmath>
#include <chrono>
#include <vector>
#include <iostream>
GLuint compile_shaders()
{
GLuint vertex_shader;
GLuint fragment_shader;
GLuint program;
static const GLchar* vertex_shader_source[]={
"#version 430 \n",
" \n",
"void main(void) \n",
"{ \n",
" gl_Position = vec4(0.0, 0.0, 0.5, 1.0); \n",
"} \n",
" \n"
};
static const GLchar* fragment_shader_source[]={
"#version 430 \n",
" \n",
"out vec4 color; \n",
"void main(void) \n",
"{ \n",
" color = vec4(0.0, 0.8, 1.0, 1.0); \n",
"} \n",
" \n"
};
vertex_shader = glCreateShader(GL_VERTEX_SHADER);
glShaderSource(vertex_shader, 1, vertex_shader_source, NULL);
glCompileShader(vertex_shader);
GLint success = 0;
glGetShaderiv(vertex_shader, GL_COMPILE_STATUS, &success);
if(success == GL_FALSE){
GLint maxLength = 0;
glGetShaderiv(vertex_shader, GL_INFO_LOG_LENGTH, &maxLength);
std::vector<GLchar> errorLog(maxLength);
glGetShaderInfoLog(vertex_shader, maxLength, &maxLength, &errorLog[0]);
for(auto x : errorLog)
{
std::cout<<x;
}
glDeleteShader(fragment_shader);
exit(-1);
}
fragment_shader = glCreateShader(GL_FRAGMENT_SHADER);
glShaderSource(fragment_shader, 1, fragment_shader_source, NULL);
glCompileShader(fragment_shader);
glGetShaderiv(fragment_shader, GL_COMPILE_STATUS, &success);
if(success == GL_FALSE){
GLint maxLength = 0;
glGetShaderiv(fragment_shader, GL_INFO_LOG_LENGTH, &maxLength);
std::vector<GLchar> errorLog(maxLength);
glGetShaderInfoLog(fragment_shader, maxLength, &maxLength, &errorLog[0]);
for(auto x : errorLog)
{
std::cout<<x;
}
glDeleteShader(fragment_shader);
exit(-1);
}
program = glCreateProgram();
glAttachShader(program, vertex_shader);
glAttachShader(program, fragment_shader);
glLinkProgram(program);
glDeleteShader(vertex_shader);
glDeleteShader(fragment_shader);
return program;
}
int main()
{
glfwInit();
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
glfwWindowHint(GLFW_RESIZABLE, GL_FALSE);
GLFWwindow* window = glfwCreateWindow(800, 600, "OpenGL", nullptr, nullptr);
glfwMakeContextCurrent(window);
glewExperimental = GL_TRUE;
glewInit();
const GLfloat color[]= { 1.0f, 1.0f, 1.0f, 1.0f};
auto start = std::chrono::system_clock::now();
GLuint rendering_program = compile_shaders();
GLuint vao;
glCreateVertexArrays(1, &vao);
glBindVertexArray(vao);
while(!glfwWindowShouldClose(window))
{
std::chrono::duration<double> diff = std::chrono::system_clock::now() - start;
double currentTime = diff.count();
glClearBufferfv(GL_COLOR, 0, color);
glUseProgram(rendering_program);
glPointSize(40.0f);
glDrawArrays(GL_POINTS, 0, 1);
glfwSwapBuffers(window);
glfwPollEvents();
}
glDeleteVertexArrays(1, &vao);
glDeleteProgram(rendering_program);
glfwTerminate();
return 0;
}
Shadery w programie nie chcą się kompilować, dostaję taki błąd:
0:1(13): error: syntax error, unexpected $end
Z góry dziękuję za pomoc!