gpt4 book ai didi

opengl - 有没有办法在用三角形带绘制的网格上实现类似行进正方形的东西?

转载 作者:行者123 更新时间:2023-12-04 14:48:08 26 4
gpt4 key购买 nike

我目前正在使用一系列三角形 strip 绘制网格。我正在使用它来渲染高度场,并在顶点着色器中完全生成顶点数据,而无需任何输入缓冲区,仅使用顶点和实例索引。这一切都很好,而且非常高效。

但是,我现在发现自己还需要在此网格上实现边界线。这里明显的解决方案是像行进方 block 。基本上,我想要实现的是这样的:

Diagram of what I want

黑点代表网格中属于某个集合的顶点,我想对红线内的区域进行不同于红线外的着色。

天真地,这似乎很容易:为顶点添加一个值,对于集合中的顶点为 1,对于集合外的顶点为 0,并根据插值是高于还是低于 0.5 进行不同的渲染,对于实例。

但是,因为它被呈现为三角形带,所以这不太有效。在实践中,由于它被呈现为三角形带,因此最终看起来像这样:

enter image description here

因此,一半的边缘有效,一半以丑陋的方形楼梯告终。

几天来,我一直在绞尽脑汁,是否有一些技巧可以用来生成不同的顶点值,或者进行比 >0.5 更复杂的测试,以便在不放弃的情况下更接近预期的形状漂亮而简单的三角形带,并且必须提前实际生成几何图形,但我想不出一个。

有没有人遇到过类似的问题?我是否缺少一些聪明的解决方案?

我在 Metal 中执行此操作,但我不希望这在很大程度上取决于所使用的特定 API。

最佳答案

听起来您正在尝试独立于下面的网格计算片段着色器中的颜色。如果是这样,您应该将颜色计算与网格分离。

假设您的占用存储在纹理中,使用 textureGather 获取附近的四个占用值;确定边界方程;然后使用纹理坐标的小数部分来确定它相对于边界的位置。 (这里的问题在于细节——尤其是模棱两可的棋盘格模式。)

一旦您实现了上述方法,很可能您甚至不再需要三角形带状网格 — 只需用一个大四边形填充整个绘图区域,然后让片段着色器完成剩下的工作。

关于opengl - 有没有办法在用三角形带绘制的网格上实现类似行进正方形的东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69609478/

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