RectangleExample(void) { prog << "#version 330\n" "in vec2 Position;" "in vec3 Color;" "out vec3 vertColor;" "void main(void)" "{" " vertColor = Color;" " gl_Position = vec4(Position, 0.0, 1.0);" "}"_glsl_vs; prog << "#version 330\n" "in vec3 vertColor;" "out vec4 fragColor;" "void main(void)" "{" " fragColor = vec4(vertColor, 1.0);" "}"_glsl_fs; prog.Link(); prog.Use(); // bind the VAO for the rectangle rectangle.Bind(); GLfloat rectangle_verts[8] = { -1.0f, -1.0f, -1.0f, 1.0f, 1.0f, -1.0f, 1.0f, 1.0f }; // bind the VBO for the rectangle vertices verts.Bind(Buffer::Target::Array); // upload the data Buffer::Data(Buffer::Target::Array, 8, rectangle_verts); // setup the vertex attribs array for the vertices VertexAttribArray vert_attr(prog, "Position"); vert_attr.Setup(2, DataType::Float); vert_attr.Enable(); GLfloat rectangle_colors[12] = { 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, }; // bind the VBO for the rectangle colors colors.Bind(Buffer::Target::Array); // upload the data Buffer::Data(Buffer::Target::Array, 12, rectangle_colors); // setup the vertex attribs array for the vertices VertexAttribArray color_attr(prog, "Color"); color_attr.Setup(3, DataType::Float); color_attr.Enable(); // gl.ClearDepth(1.0f); }
RectangleExample(void) : vs(ShaderType::Vertex) , fs(ShaderType::Fragment) { // this could be any istream std::stringstream vs_source( "#version 120\n" "attribute vec2 Position;" "attribute vec3 Color;" "varying vec3 vertColor;" "void main(void)" "{" " vertColor = Color;" " gl_Position = vec4(Position, 0.0, 1.0);" "}" ); // set the vertex shader source vs.Source(GLSLSource::FromStream(vs_source)); // compile it vs.Compile(); std::stringstream fs_source( "#version 120\n" "varying vec3 vertColor;" "void main(void)" "{" " gl_FragColor = vec4(vertColor, 1.0);" "}" ); // set the fragment shader source fs.Source(GLSLSource::FromStream(fs_source)); // compile it fs.Compile(); // attach the shaders to the program prog.AttachShader(vs); prog.AttachShader(fs); // link it prog.Link(); // and use it gl.Program.Bind(prog); // bind the VAO for the rectangle gl.VertexArray.Bind(rectangle); // bind the VBO for the rectangle vertices if(auto x = gl.Buffer.Array.Push(verts)) { GLfloat rectangle_verts[8] = { -1.0f, -1.0f, -1.0f, 1.0f, 1.0f, -1.0f, 1.0f, 1.0f }; // upload the data gl.Buffer.Array.Data(8, rectangle_verts); // setup the vertex attribs array for the vertices VertexArrayAttrib vert_attr(prog, "Position"); vert_attr.Setup<Vec2f>().Enable(); } // bind the VBO for the rectangle colors if(auto x = gl.Buffer.Array.Push(colors)) { GLfloat rectangle_colors[12] = { 1.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 1.0f, }; // upload the data gl.Buffer.Array.Data(12, rectangle_colors); // setup the vertex attribs array for the vertices VertexArrayAttrib color_attr(prog, "Color"); color_attr.Setup<Vec3f>().Enable(); } gl.Caps.DepthTest.Disable(); }
RectangleExample(void) : vs(ShaderType::Vertex) , fs(ShaderType::Fragment) { // this could be any istream std::stringstream vs_source( "#version 330\n" "in vec2 Position;" "in vec3 Color;" "out vec3 vertColor;" "void main(void)" "{" " vertColor = Color;" " gl_Position = vec4(Position, 0.0, 1.0);" "}" ); // set the vertex shader source vs.Source(GLSLSource::FromStream(vs_source)); // compile it vs.Compile(); std::stringstream fs_source( "#version 330\n" "in vec3 vertColor;" "out vec4 fragColor;" "void main(void)" "{" " fragColor = vec4(vertColor, 1.0);" "}" ); // set the fragment shader source fs.Source(GLSLSource::FromStream(fs_source)); // compile it fs.Compile(); // attach the shaders to the program prog.AttachShader(vs); prog.AttachShader(fs); // link and use it prog.Link(); prog.Use(); // bind the VAO for the rectangle rectangle.Bind(); GLfloat rectangle_verts[8] = { -1.0f, -1.0f, -1.0f, 1.0f, 1.0f, -1.0f, 1.0f, 1.0f }; // bind the VBO for the rectangle vertices verts.Bind(Buffer::Target::Array); // upload the data Buffer::Data(Buffer::Target::Array, 8, rectangle_verts); // setup the vertex attribs array for the vertices VertexAttribArray vert_attr(prog, "Position"); vert_attr.Setup<Vec2f>().Enable(); GLfloat rectangle_colors[12] = { 1.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 1.0f, }; // bind the VBO for the rectangle colors colors.Bind(Buffer::Target::Array); // upload the data Buffer::Data(Buffer::Target::Array, 12, rectangle_colors); // setup the vertex attribs array for the vertices VertexAttribArray color_attr(prog, "Color"); color_attr.Setup<Vec3f>().Enable(); // gl.Disable(Capability::DepthTest); }