gpt4 book ai didi

c++ - 如何在 DirectX 11 中绘制带有曲面 segmentation 的虚线图案 3D 线?

转载 作者:行者123 更新时间:2023-11-28 04:14:00 25 4
gpt4 key购买 nike

我需要在 directx 11 中绘制线条,它会像 GDI 中的点线笔绘图一样显示颜色。我知道镶嵌会在每条线之间放置更多顶点。有没有人告诉我如何在 directx 11 中获得虚线图案绘图线?

最佳答案

您可以在像素着色器中平铺屏幕空间中的小纹理。像素着色器可能如下所示:

Texture2D<float4> patternTexture : register(t0);
static const uint2 patternSize = uint2( 8, 8 );

float4 main( float4 screenSpace : SV_Position ) : SV_Target
{
// Convert position to pixels
const uint2 px = (uint2)screenSpace.xy;

// Tile the pattern texture.
// patternSize is constexpr;
// if it's power of 2, the `%` will compile into bitwise and, much faster.
const uint2 readPosition = px % patternSize;

// Read from the pattern texture
return patternTexture.Load( uint3( readposition, 0 ) );
}

或者您可以在运行时生成图案,而无需读取纹理。这是一个像素着色器,它每隔一个像素就会跳过一次:

float4 main( float4 color: COLOR0, float4 screenSpace : SV_Position ) : SV_Target
{
// Discard every second pixel
const uint2 px = ((uint2)screenSpace.xy) & uint2( 1, 1 );
if( 0 != ( px.x ^ px.y ) )
return color;
discard;
return float4( 0 );
}

关于c++ - 如何在 DirectX 11 中绘制带有曲面 segmentation 的虚线图案 3D 线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57057282/

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