本文整理汇总了C++中clan::Canvas::set_viewport方法的典型用法代码示例。如果您正苦于以下问题:C++ Canvas::set_viewport方法的具体用法?C++ Canvas::set_viewport怎么用?C++ Canvas::set_viewport使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类clan::Canvas
的用法示例。
在下文中一共展示了Canvas::set_viewport方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: set_user_projection
void App::set_user_projection(clan::Canvas &canvas, clan::Sizef &area_size, Options *options)
{
canvas.set_viewport(clan::Rectf(0, 0, area_size));
float lens_zoom = 3.2f;
float lens_near = 0.1f;
float lens_far = 10000.0f;
float lens_aspect = 1.0f;
float fov = 2.0f * atan2(1.0f, lens_zoom);
float aspect = 1.0f;
aspect = ( area_size.width * lens_aspect) / area_size.height;
fov = (fov * 180.0f) / clan::PI;
clan::Mat4f projection_matrix = clan::Mat4f::perspective( fov, aspect, lens_near, lens_far, clan::handed_left, clan::clip_negative_positive_w);
float ratio = 1.0f / canvas.get_gc().get_pixel_ratio();
clan::Mat4f pixel_scaling_matrix = clan::Mat4f::scale(ratio, ratio, 1.0f);
canvas.set_projection(pixel_scaling_matrix * projection_matrix);
clan::Mat4f modelview_matrix = clan::Mat4f::identity();
modelview_matrix.translate_self(-1.0f, 1.0, lens_zoom);
modelview_matrix = modelview_matrix * clan::Mat4f::rotate(clan::Angle((float) -options->grid_angle, clan::angle_degrees), 1.0f, 0.0f, 0.0f, false);
modelview_matrix.scale_self(2.0f / area_size.width, -2.0f / area_size.height, 1.0f);
canvas.set_transform(modelview_matrix);
}