首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Flash与AGAL:如何正确插值法向量

Flash与AGAL:如何正确插值法向量
EN

Stack Overflow用户
提问于 2013-02-06 13:23:48
回答 1查看 457关注 0票数 1

我试图写一组着色器,以便能够绘制表面的边缘(不是多边形!),就像在游戏中的Echochrome。

根据我从图形编程中所能记得的,这样做的技术是进行一次多次渲染。第一遍应该将脸的法线向量和深度编码为RGBA颜色,并将这些绘制成纹理。第二次检查应该查找纹理中的值,如果当前片段中的法线或深度信息与周围纹理的法线或深度有很大差异,则应绘制边缘。

(注:如果有更简单的方法来做,请告诉我,特别是如果这是很容易在闪存。然而,我的具体问题如下。)

我在编程第一关就遇到了麻烦。根据我在DirectX 9.0c 3D游戏编程简介中所读到的内容:弗兰克·D·露娜的着色方法,正确的方法是“插值”一个法向量,即对三角形顶点的法向量进行平均,然后对表面上的每个片段使用这个值。然而,我的片段着色器是插值法向量,结果是绘制一个梯度,而不是固体颜色的表面。

我怎样才能得到必要的平均值而不是插值呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-06 14:17:52

我认为你需要复制你的顶点,这样每个三角形都有它自己的三个顶点,而不是与任何其他三角形共享。三角形的每个顶点的法线应该是平均法线:三角形的所有三个法线都是相同的,这样插值的值就不会改变。我知道这并不理想,但我没有任何其他的解决办法。

在OpenGL中,您可以在几何图形着色器中计算平均法线,或者使用“平坦”限定符,这样法线就不会被内插,但是我认为这两种方法都不能用AGAL实现。

See this question/answer获取更多信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14730181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档