这个问题可能看起来很简单,但我无法找到HLSL如何处理自己的坐标系。
我只想知道位于(0,0)的位置(左上角或左下角),由于我是这些着色器概念的初学者,我无法自行扣除
感谢您的帮助!
答案 0 :(得分:5)
我相信你想了解DirectX的坐标系。 HLSL是一种着色语言,并没有定义协调空间。
以下是一些可以帮助您入门的链接。
答案 1 :(得分: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