视口变换
将坐标转化为屏幕窗口坐标
//视图变换
void ViewTransform()
{
for (int i = 0; i < objectListCount; i++)
{
for (int j = 0; j < objecetList[i]->triangleCount; j++)
{
for (int k = 0; k < 3; k++)
{
float t = (objecetList[i]->triangleList[j].newPos[k].x + camera->GetViewWidth() / 2) / camera->GetViewWidth();
objecetList[i]->triangleList[j].newPos[k].x = Interp(0.0f, (float)width, t);
t = (objecetList[i]->triangleList[j].newPos[k].y + camera->GetViewHeight() / 2) / camera->GetViewHeight();
//windows编程中Y轴要反转
objecetList[i]->triangleList[j].newPos[k].y = (float)height - Interp(0.0f, (float)height, t);
}
}
}
}
下次加入三角形的背面剔除,可见性测试。
项目github地址