Directx 着色器具有奇怪的输入值

Directx 着色器具有奇怪的输入值,directx,shader,directx-11,sharpdx,Directx,Shader,Directx 11,Sharpdx,我目前的问题如下:我尝试创建一个集成了Primitive渲染的SpriteBatch(Sprite和PrimiteBatch合一) 目前,VisualStudio11的调试器显示有一行渲染。IA阶段是正确的,因此VertexShader阶段是正确的。但是我没有得到任何输出 我用调试器运行了一遍,发现着色器有异常大的值 我经过两个顶点:20,20(位置)和80,80(位置),都是黑色的。 ConstantBuffer有三个矩阵:世界(用于手动对象变换)、视图和投影 在代码中,它们都是正确的: M1

我目前的问题如下:我尝试创建一个集成了Primitive渲染的SpriteBatch(Sprite和PrimiteBatch合一)

目前,VisualStudio11的调试器显示有一行渲染。IA阶段是正确的,因此VertexShader阶段是正确的。但是我没有得到任何输出

我用调试器运行了一遍,发现着色器有异常大的值

我经过两个顶点:20,20(位置)和80,80(位置),都是黑色的。 ConstantBuffer有三个矩阵:世界(用于手动对象变换)、视图和投影

在代码中,它们都是正确的: M11=0.00215749722,依此类推。 在着色器中,它如下所示:

位置=x=200000.000000000,y=200000.000000000,z=0.000000000,w=0.000000000 (#1个顶点的位置)

最后,XYZW的输出结果(位置)为0。 在413,-918或者类似的事情之前。我不知道为什么,但现在结果总是0

这很奇怪,我完全被卡住了:-/

谢谢
R

您的投影矩阵看起来不正确,特别是第3行的w应该是1,第2行的z应该是一个小数字。您是手动设置的吗?我使用的是SharpDX矩阵类。所以没有;)
    Projection[0] = x = 22.000000000, y = 0.000000000, z = 0.000000000, w = 0.000000000
    Projection[1]   x = 0.000000000, y = -45.000000000, z = 0.000000000, w = 0.000000000
    Projection[2]   x = 0.000000000, y = 0.000000000, z = 10000.000000000, w = 0.00000 0000
    Projection[3]   x = 0.000000000, y = 0.000000000, z = 0.000000000, w = 10000.000000000