1

这个问题可能看起来很简单,但我找不到 HLSL 如何处理自己的坐标系。

我只想知道 (0,0) 在哪里(左上角或左下角),而且由于我是这些着色器概念的初学者,我无法自己推断

谢谢你的帮助!

4

2 回答 2

5

相信你想了解 DirectX 的坐标系。HLSL 是一种着色语言,并没有定义工作的坐标空间。

这里有几个链接可以帮助您入门。

  1. 坐标系
  2. 像素和纹理坐标系
于 2012-05-29T18:56:45.117 回答
1

在顶点着色器中,您可以使用多个坐标系或空间...

通常你的顶点数据到达世界坐标......

然后顶点数据由WordViewProjection矩阵转换,从世界坐标转换为齐次投影坐标,这是顶点着色器中返回的值......

如果顶点在屏幕内,如果你将 x 和 y 坐标除以 w 分量,你会得到一个范围内的点(-1..1,-1..1)......我不确定但我认为 (-1,-1) 是左上角......你只需要测试它

您可以将两个三角形发送到图形卡,这些三角形代表屏幕角在此空间中的四边形 (-1,-1,0), (1,-1,0), (1,1,0), (-1, 1,0),这样您就不需要通过任何矩阵来转换顶点数据。

你还没有解释你想做什么......但我想你想做一个后期处理......

如果是这种情况...您可以使用纹理坐标在像素着色器中工作...这样左上点将是(0,0),右下点将是(1,1)

在这里您可以找到代码和扩展说明:http ://ploobs.com.br/?p=1092

于 2012-05-29T22:36:24.177 回答