I was making a Julia set, and everything worked fine, but then I moved my vertices code into a vertex shader, and then suddenly I had a segfault at glLinkProgram(shaderProgram);
I have no idea why, as before when I checked the logs for each shader, they compiled fine with no errors, and the same code works completely fine in a different project
Code for compiling shaders/linking
glGenBuffers(1,&vbo);
glBindBuffer(GL_ARRAY_BUFFER,vbo);
glBufferData(GL_ARRAY_BUFFER,sizeof(vertices),vertices,GL_STATIC_DRAW);
GLuint vertexShader = glCreateShader(GL_VERTEX_SHADER);
glShaderSource(vertexShader,1,&pVertex,NULL);
glCompileShader(vertexShader);
GLuint fragmentShader = glCreateShader(GL_FRAGMENT_SHADER);
glShaderSource(fragmentShader,1,&pFragment,NULL);
glCompileShader(fragmentShader);
GLuint shaderProgram = glCreateProgram();
glAttachShader(shaderProgram, vertexShader);
glAttachShader(shaderProgram, fragmentShader);
glLinkProgram(shaderProgram);
glUseProgram(shaderProgram);
Code for Fragment Shader:
#version 130
uniform sampler1D tex;
uniform vec2 c;
uniform int iter;
void main()
{
vec2 z;
z.x = 3.0 * (gl_TexCoord[0].x - 0.5);
z.y = 2.0 * (gl_TexCoord[0].y - 0.5);
int i;
for (i=0;i<iter;i++)
{
float x = (z.x * z.x - z.y * z.y) + c.x;
float y = (z.y * z.x + z.x * z.y) + c.y;
if ((x * x + y * y) > 4.0) break;
z.x = x;
z.y = y;
}
gl_FragColor = texture1D(tex, (i == iter ? 0.0 : float(i)) / 100.0);
}
Code for Vertex shader:
#version 130
attribute vec4 position;
void main()
{
gl_Position = vec4(position.xyz, 1.0);
}