我试图实现背面剔除到我的3d引擎,但它似乎不工作,我按照javidx9的视频,这是唯一一个我可以找到背面剔除,但它没有工作,我不知道为什么。
唯一做得正确的(或者我认为是这样的)是正常的计算,所以没有必要添加,除非我的计算是错误的。我现在唯一需要的是什么条件允许画三角形
我有点理解它是如何工作的,背后的公式,但我无法编码。我想收到的答案是什么,告诉我如何使用代码实现它
下面是需要的代码
triangle &listtri = tridrawlist[i]; // the triangle that is going through the culling process
vec3 norm; // the surface normal of the triangle
line = listtri.vpos2 - listtri.vpos; // vpos means view space (camera space) position if you were wondering
line2 = listtri.vpos3 - listtri.vpos;
norm = line.cross(line2); // cross() is a cross product function (which works) and in this case the first vector is line and the second is lin2
// here is where you write the condition / variables needed for you to solve the problem
字符串
1条答案
按热度按时间vyu0f0g11#
看来你首先要做的是,确认法向量的计算结果。例如,渲染它并检查法线是指向内部还是外部方向。
如果您确认所有法向量都正确指向外部方向,则“剔除”只是检查法向量是否指向相机侧,例如:
字符串