- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何使用 dear imgui 填充两条贝塞尔曲线之间的区域?
我使用 ImDrawList API 绘制曲线,如下所示:
ImVec2 p0(10, 100); ImVec2 c1(110, 50); ImVec2 p1(210, 100);
ImVec2 q0(10, 200); ImVec2 c2(110, 100); ImVec2 q1(210, 200);
auto col = IM_COL32(0,255,255, 255);
ImDrawList* draw_list = ImGui::GetWindowDrawList();
draw_list->AddBezierCurve(p0, c1, c1, p1, col, 1.0f);
draw_list->AddBezierCurve(q0, c2, c2, q1, col, 1.0f);
// I can close the curves, visually, with these lines
draw_list->AddLine(p0, q0, col, 1.0f);
draw_list->AddLine(p1, q1, col, 1.0f);
编辑:
我使用有状态 API 绘制了我想要的路径,然后我调用了一个函数来填充这条路径。这是代码:
draw_list->PathLineTo(p0);
draw_list->PathBezierCurveTo(c1, c1, p1);
draw_list->PathLineTo(q1);
draw_list->PathBezierCurveTo(c2, c2, q0);
draw_list->PathFillConvex(col);
但是如您所见,有些地方不对:
正确的几何图形以白色绘制。
最佳答案
您遇到的问题是,OpenGL 中的填充图元仅针对凸 图元定义。一个集合被定义为凸如果对于集合内的任意两个点您可以在这些点之间画一条线而不离开所述集合的边界。
Dear-ImGUI 大多只是将翻译后的绘图命令按原样传递给 OpenGL,没有任何中间 segmentation 。 …这会导致您看到的问题,以及为什么填充函数的名称中有 …Convex
部分。
解决方案是要么将非凸形状分解为更小的凸子形状,要么使用也适用于凸形状的填充方法,例如 scanline算法(使用计算着色器最容易在 GPU 上实现)。
关于c++ - 如何使用 dear imgui 填充两条贝塞尔曲线之间的区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47846087/
是否可以使用“dear imgui”让两个按钮具有相同的按钮文本? 因为生成两个或多个 ImGui::Button("PRESS") 将导致只有第一个对选择使用react(在 GCC/Win64/Mi
如何使用 dear imgui 填充两条贝塞尔曲线之间的区域? 我使用 ImDrawList API 绘制曲线,如下所示: ImVec2 p0(10, 100); ImVec2 c1(
我完成了基于 Dear ImGui DrawList 渲染 2d 对象的类,因为它可以绘制许多不同的对象变体,这要归功于索引 vector 动态数组并且仍然保持良好的优化。亲爱的 ImGui 可以渲染
对于我正在开发的 2D 游戏,我想弄清楚射弹何时最接近目标。 射弹是每帧移动恒定 dx,dy 的点。目标是另一个点,其相对于射弹的速度足够慢,可以被认为是静止的。我想让射弹在(大约)尽可能接近目标时爆
我使用以下命令在 Windows 10 上安装了 Dear ImGui: vcpkg install imgui:x64-windows 仅安装: imgui[core]:x64-windows ->
我是一名优秀的程序员,十分优秀!