PDA

View Full Version : Any idea why opengl context mught close if i use a specific shader



lummxx
01-17-2016, 08:49 PM
I fixed the issue. it was a line that was cousing me to loose the reference to the shader.

I have a simple shaer that i am just trying to render and see if my mesh is loaded correctly. The problem is when i want to use the shader the program just exits without any warning or error code (the opengl context is closed). I have no idea how to firuge this out and i dont know what is causing it. I am sorry if i didnt provide enough information but i jsut dont understand what is happening.

I am having a hard time debugging because as far as i can see, i can not debug using bumblebee and qt creator. If anyone knows how to debug using bumblebee i might be able to find the error if there is something wrong when creating shaders and referencing them.

Also i do not have any error codes from opengl except for OSD. I disabled that and commented all OSD code but still the same.

Vertex shader

#version 400
#extension GL_ARB_separate_shader_objects : enable

uniform mat4 VP;
uniform mat4 P;


struct Texture {
sampler2D diffuse;
sampler2D specular;
sampler2D normal;
sampler2D ambient;
sampler2D height;
//vec2 texCoord;
};

struct Material {
vec3 ambient; // Ka
vec3 diffuse; // Kd
vec3 specular; // Ks
vec3 transmittance; // Tr
vec3 emission; // Ke
float shininess; // Ns
float ior; // Ni
float dissolve; // Dissolve
int illum; // Illum
Texture texture;
};

uniform Material material;

layout (location = 0) in vec3 position;
layout (location = 1) in vec2 texCoord;
layout (location = 2) in vec3 normal;

out vec3 Position;
out vec3 Normal;
out vec2 TexCoord;

void main(){

Position = position;
Normal = normal;
TexCoord = texCoord;

gl_Position = VP * vec4(position, 1.0);
}

Fragment shader


and

#version 400
#extension GL_ARB_separate_shader_objects : enable

uniform mat4 VP;
uniform mat4 P;


struct Texture {
sampler2D diffuse;
sampler2D specular;
sampler2D normal;
sampler2D ambient;
sampler2D height;
//vec2 texCoord;
};

struct Material {
vec3 ambient; // Ka
vec3 diffuse; // Kd
vec3 specular; // Ks
vec3 transmittance; // Tr
vec3 emission; // Ke
float shininess; // Ns
float ior; // Ni
float dissolve; // Dissolve
int illum; // Illum
Texture texture;
};

uniform Material material;

layout (location = 0) in vec3 position;
layout (location = 1) in vec2 texCoord;
layout (location = 2) in vec3 normal;



in vec3 Position;
in vec3 Normal;
in vec2 TexCoord;

out vec4 gl_FragColor;

void main(){
gl_FragColor = texture(material.texture.diffuse, TexCoord) * vec4(material.diffuse, 1.0f);
//gl_FragColor = vec4(1.0f);
}