gpt4 book ai didi

c - 带开罗的 Gouraud 阴影三角形

转载 作者:太空宇宙 更新时间:2023-11-04 03:37:34 24 4
gpt4 key购买 nike

我正在尝试使用解释的方法用 Cairo 获得一个 Gouraud 阴影三角形 here .

我有以下代码:

cairo_surface_t *surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 240, 240);
cairo_t *cr = cairo_create(surface);

cairo_pattern_t * pattern = cairo_pattern_create_mesh();
cairo_mesh_pattern_begin_patch (pattern);
cairo_mesh_pattern_move_to (pattern, 100, 100);
cairo_mesh_pattern_line_to (pattern, 130, 130);
cairo_mesh_pattern_line_to (pattern, 130, 70);
cairo_mesh_pattern_set_corner_color_rgb(pattern, 0, 1, 0, 0);
cairo_mesh_pattern_set_corner_color_rgb(pattern, 1, 0, 1, 0);
cairo_mesh_pattern_set_corner_color_rgb(pattern, 2, 0, 0, 1);
cairo_mesh_pattern_end_patch(pattern);
cairo_set_source(cr, pattern);
cairo_fill(cr);

cairo_surface_write_to_png (surface,"test.png");

但是 test.png 只是黑色。

最佳答案

cairo_mesh_pattern_line_to() 不会在实际绘图发生的地方创建几何体。它仅指定模式将发生的位置。因此,要真正看到某些东西,您必须指定几何形状,例如cairo_line_to()

所以这应该可行:

cairo_surface_t *surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 240, 240);
cairo_t *cr = cairo_create(surface);

cairo_pattern_t * pattern = cairo_pattern_create_mesh();
cairo_mesh_pattern_begin_patch (pattern);
cairo_mesh_pattern_move_to (pattern, 100, 100);
cairo_mesh_pattern_line_to (pattern, 130, 130);
cairo_mesh_pattern_line_to (pattern, 130, 70);
cairo_mesh_pattern_set_corner_color_rgb(pattern, 0, 1, 0, 0);
cairo_mesh_pattern_set_corner_color_rgb(pattern, 1, 0, 1, 0);
cairo_mesh_pattern_set_corner_color_rgb(pattern, 2, 0, 0, 1);
cairo_mesh_pattern_end_patch(pattern);
cairo_set_source(cr, pattern);
cairo_move_to(cr, 100, 100);
cairo_line_to(cr, 130, 130);
cairo_line_to(cr, 130, 70);
cairo_fill(cr);

cairo_surface_write_to_png (surface,"test.png");

关于c - 带开罗的 Gouraud 阴影三角形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31249627/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com