X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=tools%2Fviewer.cpp;h=a1703ede17d5621b98954db1deef56e57132ab86;hb=c0b7d6ee4a7478f5aecb1504429ec1fc846d64ed;hp=674fbf16aafed00631b4dc6e42f13a8f42c5c504;hpb=75870f0241d874fd4f60ea73bd55b32452b72fc5;p=libs%2Fgl.git diff --git a/tools/viewer.cpp b/tools/viewer.cpp index 674fbf16..a1703ede 100644 --- a/tools/viewer.cpp +++ b/tools/viewer.cpp @@ -23,10 +23,10 @@ #include #include #include -#include #include #include #include +#include #include #include @@ -105,14 +105,26 @@ private: Viewer::Options::Options(int argc, char **argv) { + string window_size; + GetOpt getopt; getopt.add_option('r', "resources", resource_locations, GetOpt::REQUIRED_ARG); getopt.add_option('a', "animation", animation_name, GetOpt::REQUIRED_ARG); + getopt.add_option('w', "window-size", window_size, GetOpt::REQUIRED_ARG); getopt.add_argument("renderable", renderable_name); getopt(argc, argv); wnd_opts.width = 1024; wnd_opts.height = 768; + if (!window_size.empty()) + { + RegMatch m = Regex("^([1-9][0-9]*)x([1-9][0-9]*)$").match(window_size); + if(!m) + throw usage_error("Invalid window size"); + + wnd_opts.width = lexical_cast(m[1].str); + wnd_opts.height = lexical_cast(m[2].str); + } gl_opts.gl_version_major = Graphics::GLOptions::LATEST_VERSION; gl_opts.core_profile = true; } @@ -165,7 +177,7 @@ Viewer::Viewer(int argc, char **argv): object = new GL::Object; GL::Technique *tech = new GL::Technique; - tech->add_pass(0); + tech->add_method(0); object->set_mesh(mesh); object->set_technique(tech); renderable = object; @@ -215,18 +227,18 @@ Viewer::Viewer(int argc, char **argv): mouse.signal_axis_motion.connect(sigc::bind_return(sigc::mem_fun(this, &Viewer::axis_motion), false)); light.set_position(GL::Vector4(0, 0, 1, 0)); - lighting.attach(0, light); + lighting.attach(light); camera.set_up_direction(GL::Vector3(0, 0, 1)); update_camera(); if(!sequence) { - sequence = new GL::Sequence(view); + sequence = new GL::Sequence(); GL::Sequence::Step &step = sequence->add_step(0, *renderable); step.set_lighting(&lighting); - step.set_depth_test(&GL::DepthTest::lequal()); - step.set_blend(&GL::Blend::alpha()); + step.set_depth_test(GL::LEQUAL); + step.set_blend(GL::Blend(GL::SRC_ALPHA, GL::ONE_MINUS_SRC_ALPHA)); } view.set_content(sequence);