c++ - Incompatible Types (vec4 and vec3) in assignment -


i've been learning opengl, along "glsl". i'm getting error trying compile fragment shader:

incompatible types (vec4 , vec3) in assignment (and no available implicit conversion)

can please me understand , resolve error? code below:

#version 330 core in vec3 ourcolor; in vec2 texcoord;  out vec4 color;  // texture samplers uniform sampler2d ourtexture1;  void main() {     // linearly interpolate between both textures (second texture combined)     color = texture(ourtexture1, texcoord); } 

thank you.

edit: here shader compiler:

class shaders_shader { public:     gluint program;     // constructor generates shader on fly     shaders_shader( const glchar *vertexpath, const glchar *fragmentpath )     {     // 1. retrieve vertex/fragment source code filepath     std::string vertexcode;     std::string fragmentcode;     std::ifstream vshaderfile;     std::ifstream fshaderfile;     // ensures ifstream objects can throw exceptions:     vshaderfile.exceptions ( std::ifstream::badbit );     fshaderfile.exceptions ( std::ifstream::badbit );     try     {         // open files         vshaderfile.open( vertexpath );         fshaderfile.open( fragmentpath );         std::stringstream vshaderstream, fshaderstream;         // read file's buffer contents streams         vshaderstream << vshaderfile.rdbuf( );         fshaderstream << fshaderfile.rdbuf( );         // close file handlers         vshaderfile.close( );         fshaderfile.close( );         // convert stream string         vertexcode = vshaderstream.str( );         fragmentcode = fshaderstream.str( );     }     catch ( std::ifstream::failure e )     {         std::cout << "error::shader::file_not_succesfully_read" << std::endl;     }     const glchar *vshadercode = vertexcode.c_str( );     const glchar *fshadercode = fragmentcode.c_str( );     // 2. compile shaders     gluint vertex, fragment;     glint success;     glchar infolog[512];     // vertex shader     vertex = glcreateshader( gl_vertex_shader );     glshadersource( vertex, 1, &vshadercode, null );     glcompileshader( vertex );     // print compile errors if     glgetshaderiv( vertex, gl_compile_status, &success );     if ( !success )     {         glgetshaderinfolog( vertex, 512, null, infolog );         std::cout << "error::shader::vertex::compilation_failed\n" << infolog << std::endl;     }     // fragment shader     fragment = glcreateshader( gl_fragment_shader );     glshadersource( fragment, 1, &fshadercode, null );     glcompileshader( fragment );     // print compile errors if     glgetshaderiv( fragment, gl_compile_status, &success );     if ( !success )     {         glgetshaderinfolog( fragment, 512, null, infolog );         std::cout << "error::shader::fragment::compilation_failed\n" << infolog << std::endl;     }     // shader program     this->program = glcreateprogram( );     glattachshader( this->program, vertex );     glattachshader( this->program, fragment );     gllinkprogram( this->program );     // print linking errors if     glgetprogramiv( this->program, gl_link_status, &success );     if (!success)     {         glgetprograminfolog( this->program, 512, null, infolog );         std::cout << "error::shader::program::linking_failed\n" << infolog << std::endl;     }     // delete shaders they're linked our program , no longer necessery     gldeleteshader( vertex );     gldeleteshader( fragment );  } // uses current shader void use( ) {     gluseprogram( this->program ); } }; 


Comments

Popular posts from this blog

ubuntu - PHP script to find files of certain extensions in a directory, returns populated array when run in browser, but empty array when run from terminal -

php - How can i create a user dashboard -

javascript - How to detect toggling of the fullscreen-toolbar in jQuery Mobile? -