1

我目前正在研究由高度图产生的圆柱状地形。程序中发生的事情很简单,地形颜色的纹理具有区域的 alpha 值,我希望它不可见,另一个纹理 ARGB,A 是高度的灰度,RGB 是光线的正常值。纹理使得 A 值从 1 变为 255,我为有孔的区域保留 0,这意味着我不希望那时存在。所以理论上没问题,我根据第一个纹理使这些区域不可见,但在实践中发生的事情是程序将 0 视为最小高度,即使纹理在顶部,也会为此创建一些线条0的区域, 注意去圆柱中心的线 当我停止使那些顶点不可见时,这就是它的方式

注意去圆柱体中心的线 当我停止使这些顶点不可见时,这就是它的方式

所以,只是说,我在像素着色器上使用了函数 Clip() 使其不可见。

基本上我需要帮助:是否有可能,就像我在像素着色器上使用 clip() 一样,我在顶点着色器上做类似的事情并摆脱不需要的顶点?基本上,是否可以只说忽略值 0?有什么想法可以解决这个问题吗?我想使所有为 0 的顶点成为他邻居的值,这样这些线就不会到中心,而是到与圆柱体本身相同的平面。另一件事是我们可以看到程序正在将值从一个顶点插入到下一个顶点,这就是为什么我在中途切到不可见顶点的原因

我正在使用带有 C++ 的 Directx11 API,并且该程序使用 Tessellation。

感谢您抽出宝贵的时间,如果您对此提出任何意见,我们将非常高兴!

4

1 回答 1

0

好吧,我确实解决了这个问题。我使具有高度值的纹理通过一个修改器,该修改器创建了另一个纹理,其零值被侧面像素替换,其值不同于零或更改为 128.0f。这样一来,怪异的线条方向就更准确了,不是去圆柱体的中心,而是沿着线条。

于 2012-09-20T19:04:50.847 回答