渲染部分 vertex_shader

按照文档说明用三角形顶点左乘的 MVP 矩阵得到视角空间的坐标,

然后渲染失败了
屏幕截图 2023-10-21 204728
自己 debug 时发现打印变换后的顶点坐标,发现有的 x,y 都大于 1 或小于 -1 了,而且除了 x,y 后面两维度也怪怪的,请问一下大佬们是怎么回事
屏幕截图 2023-10-21 204939
这是输出的乘完 MVP 矩阵后的顶点坐标(不是应该在 -1~1 之间吗?而且看渲染的牛应该在 -0.5~0.5 范围才对)

@tropher 这个同学的理解是正确的,到了 NDC 空间后,可视区域每一维的坐标都是 -1 到 1(超出的部分会在 rasterization 中被剔除),变换到视口空间只需将 x.y 变换到对应的长宽,z 则变换到 0 到某个特定的值。这时才能算作变换到视口空间

三角形顶点左乘 MVP 矩阵应该还没有到视口空间。
我自己的理解是,模型坐标系的三角形的顶点坐标左乘 MVP 矩阵后,应当处于一个相机坐标系到 NDC 之间的状态(也就是刚刚做完透视投影)。此时,三角形的顶点坐标(x,y,z)再除以它的第四维 w,就是到了 NDC 空间。
然后再左乘一个视口变换矩阵,就到了屏幕空间(即 pdf 版文档中的 screen space,好像也称作视口空间)。

当然,我自己也没渲染成功 :sob:,以上也仅供你参考参考。

好的,感谢,我去试一试。

你修改了 MVP 矩阵吗?或者你在把 newtriangle.vertex[i] 写入 payload 传给 vertex_shader 前修改过 newtriangle.vertex 吗?我都没修改,乘了 MVP 矩阵之后 xy 范围是对的

@222333 没有动 MVP 矩阵,传的顶点就是三角形的模型坐标系的顶点也没有动,乘完就是我帖子那样 :sob:,但是按照上面这位同学说的做了后好了。