X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=demos%2Fshaders.cpp;h=44d0b440795cad881dc8f4c6cad7916f96a070c9;hp=27538e4eb2e6a2c35e1bf5aa9e7fa4465a5b8bd8;hb=6a832fe1771f8c7bca0faa0d383fbbab062a1c56;hpb=0c731643d6363eb4c492e836ffb919cb7c0a3035 diff --git a/demos/shaders.cpp b/demos/shaders.cpp index 27538e4e..44d0b440 100644 --- a/demos/shaders.cpp +++ b/demos/shaders.cpp @@ -16,8 +16,8 @@ #include #include #include +#include #include -#include using namespace std; using namespace Msp; @@ -56,10 +56,10 @@ int main() tex2.image(0, GL::RGB, GL::UNSIGNED_BYTE, data); delete[] data; - GL::Mesh mesh((GL::VERTEX3, GL::NORMAL3, GL::TEXCOORD2, GL::COLOR4_UBYTE, GL::ATTRIB3,4, GL::ATTRIB3,5)); + GL::Mesh mesh((GL::VERTEX3, GL::NORMAL3, GL::TEXCOORD2, GL::COLOR4_UBYTE, GL::TANGENT3, GL::BINORMAL3)); GL::MeshBuilder bld(mesh); bld.color(0.5f, 1.0f, 0.0f); - GL::CapsuleBuilder(1, 0.72498, 32, 17).texture_fit(GL::GeometryBuilder::WRAP).tangent(4).binormal(5).build(bld); + GL::CapsuleBuilder(1, 0.72498, 32, 17).texture_fit(GL::GeometryBuilder::WRAP).tbn().build(bld); GL::Material mat; mat.set_diffuse(GL::Color(0.5, 1.0, 0.0)); mat.set_specular(GL::Color(0.45, 0.5, 0.4)); @@ -67,31 +67,24 @@ int main() vector programs; for(unsigned i=0; i<12; ++i) { - GL::Program::StandardFeatures feat; + GL::ProgramBuilder::StandardFeatures feat; feat.material = i/4>0; feat.texture = i/4>1; feat.lighting = i%4>0; - feat.normalmap = i%4>1; + feat.normal_map = i%4>1; feat.specular = i%4>2; programs.push_back(new GL::Program(feat)); - if(feat.normalmap) - { - programs.back()->bind_attribute(4, "tangent"); - programs.back()->bind_attribute(5, "binormal"); - programs.back()->link(); - } } GL::ProgramData progdata; + progdata.uniform("texture", 0); progdata.uniform("normalmap", 1); GL::Lighting lighting; GL::Light light; - light.set_position(GL::Vector4(0, 2, 3, 0)); + light.set_position(GL::Vector4(0, -0.781, 0.625, 0)); lighting.attach(0, light); - GL::Bind bind_light(lighting); - GL::Texturing texturing; texturing.attach(0, tex1); texturing.attach(1, tex2); @@ -110,15 +103,16 @@ int main() { GL::Bind bind_depth(GL::DepthTest::lequal()); GL::Renderer renderer(0); + renderer.set_lighting(&lighting); renderer.set_material(&mat); renderer.set_texturing(&texturing); renderer.add_shader_data(progdata); for(unsigned i=0; i<12; ++i) { - GL::MatrixStack::Push push(renderer.matrix_stack()); + GL::Renderer::Push push(renderer); renderer.set_shader_program(programs[i]); - renderer.matrix_stack() *= GL::Matrix::translation(-3.3+(i%4)*2.2, 0, -3.5+(i/4)*3.0); - renderer.matrix_stack() *= GL::Matrix::rotation(angle, 0, 0, 1); + renderer.transform(GL::Matrix::translation(-3.3+(i%4)*2.2, 0, -3.5+(i/4)*3.0)); + renderer.transform(GL::Matrix::rotation(angle, 0, 0, 1)); mesh.draw(renderer); } }