PathExample(int, const char**) { using namespace oglplus; PathNVCommand commands[] = { PathNVCommand::MoveTo, PathNVCommand::LineTo, PathNVCommand::LineTo, PathNVCommand::LineTo, PathNVCommand::LineTo, PathNVCommand::Close }; GLfloat coords[] = { 0.00, 0.85, 0.65,-0.80, -0.85, 0.30, 0.85, 0.30, -0.65,-0.80 }; path.Commands( sizeof(commands)/sizeof(commands[0]), commands, sizeof(coords)/sizeof(coords[0]), coords ); path.StrokeWidth(0.01); path.JoinStyle(PathNVJoinStyle::Round); GLfloat dash_array[] = {0.05, 0.02}; path.DashArray( sizeof(dash_array)/sizeof(dash_array[0]), dash_array ); glc.MatrixMode(CompatibilityMatrixMode::Projection); glc.LoadIdentity(); glc.MatrixMode(CompatibilityMatrixMode::Modelview); glc.LoadIdentity(); gl.ClearColor(1.0f, 1.0f, 1.0f, 0.0f); gl.ClearStencil(0); gl.StencilMask(~0); gl.StencilFunc(CompareFunction::NotEqual, 0, 0x1F); gl.StencilOp( StencilOperation::Keep, StencilOperation::Keep, StencilOperation::Zero ); gl.Enable(Capability::StencilTest); }
TextExample(int /*argc*/, const char** /*argv*/) : text_glyphs(128) { using namespace oglplus; GLfloat font_scale = 48; text_glyphs.GlyphRange( PathNVFontTarget::Standard, "Sans", PathNVFontStyle::Bold, 0, 128, PathNVMissingGlyph::Use, ~0, font_scale ); GLfloat color_gen_coeffs[9] = { -0.6f, 0.0f, 0.8f, 0.0f, 0.0f, 0.0f, 0.5f, 0.0f, 0.5f }; npr.ColorGen( PathNVColor::Primary, PathNVGenMode::ObjectBoundingBox, PathNVColorFormat::RGB, color_gen_coeffs ); gl.ClearColor(1.0f, 1.0f, 1.0f, 0.0f); gl.ClearStencil(0); gl.StencilMask(~0); gl.StencilFunc(CompareFunction::NotEqual, 0, 0xFF); gl.StencilOp( StencilOperation::Keep, StencilOperation::Keep, StencilOperation::Zero ); gl.Enable(Capability::StencilTest); }
TextExample(int /*argc*/, const char** /*argv*/) : text("OpenGL") , text_path(text.size()) , glyph_indices(make_glyph_indices()) , glyph_spacings(glyph_indices.size()) { using namespace oglplus; GLfloat font_scale = 64; text_path.Glyphs( PathNVFontTarget::Standard, "Sans", PathNVFontStyle::Bold, text, PathNVMissingGlyph::Use, ~0, font_scale); text_path.GetSpacing( PathNVListMode::AccumAdjacentPairs, glyph_indices, 1.0f, 1.0f, PathNVTransformType::TranslateX, glyph_spacings); glyph_spacings.insert(glyph_spacings.begin(), 0); glyph_spacings.pop_back(); glyph_indices.pop_back(); GLfloat text_left = glyph_spacings.front(); GLfloat text_right = glyph_spacings.back(); GLfloat font_min_max[2]; text_path.GetMetricRange( PathNVMetricQuery::FontYMinBounds | PathNVMetricQuery::FontYMaxBounds, 1, 0, font_min_max); projection.Ortho( text_left - 10, text_right + 10, font_min_max[0], font_min_max[1], -1.0, +1.0); modelview.LoadIdentity(); gl.ClearColor(1.0f, 1.0f, 1.0f, 0.0f); gl.ClearStencil(0); gl.StencilMask(~0); gl.StencilFunc(CompareFunction::NotEqual, 0, 0xFF); gl.StencilOp( StencilOperation::Keep, StencilOperation::Keep, StencilOperation::Zero); gl.Enable(Capability::StencilTest); }