首先,你需要創(chuàng)建一個邊界著色器,,并使用頂點著色器將頂點坐標轉(zhuǎn)換成裁剪空間坐標(Clip Space Coordinates),。然后,,你可以使用邊界著色器的輸出緩沖區(qū)(Output Merger)來繪制空心矩形。
具體來說,,你可以在邊界著色器中使用內(nèi)插(Interpolation)來繪制空心矩形,。內(nèi)插是一種技術(shù),可以在頂點著色器和像素著色器之間插入一個過渡步驟,,在這個步驟中,,可以使用多種插值方法來控制像素著色器的輸出。 我提供了一份 C++ 代碼,,展示了如何使用邊界著色器和輸出緩沖區(qū)來繪制空心矩形:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
//包含 DirectX 11頭文件
#include <d3d11.h>
//創(chuàng)建邊界著色器
ID3D11HullShader*pHullShader;
//創(chuàng)建頂點著色器
ID3D11VertexShader*pVertexShader;
//創(chuàng)建輸出緩沖區(qū)
ID3D11Buffer*pOutputBuffer;
//初始化邊界著色器
void InitHullShader()
{
//加載邊界著色器代碼
const char*hullShaderCode =
"void main(input patch<float4, 4> i, output patch<float4, 4> o) {"