Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash和AGAL:如何正确插值法向量_Flash_Interpolation_Normals_Agal - Fatal编程技术网

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

Flash和AGAL:如何正确插值法向量,flash,interpolation,normals,agal,Flash,Interpolation,Normals,Agal,我正在尝试编写一组着色器,以便能够绘制曲面的边(而不是多边形!),就像在游戏Echochrome中一样 根据我在图形编程中所记得的,实现这一点的技术是进行多次渲染。第一个过程应将面法线向量和深度编码为RGBA颜色,并将其绘制到纹理。如果当前片段的法线或深度信息与周围纹理的法线或深度存在显著差异,则第二遍应查找纹理中的值并绘制边 (注意:如果有更简单的方法,请告诉我,特别是在Flash中更容易做到。但是,我的具体问题如下。) 我在编程第一关时遇到了障碍。根据我在《DirectX 9.0c 3D游戏

我正在尝试编写一组着色器,以便能够绘制曲面的边(而不是多边形!),就像在游戏Echochrome中一样

根据我在图形编程中所记得的,实现这一点的技术是进行多次渲染。第一个过程应将面法线向量和深度编码为RGBA颜色,并将其绘制到纹理。如果当前片段的法线或深度信息与周围纹理的法线或深度存在显著差异,则第二遍应查找纹理中的值并绘制边

(注意:如果有更简单的方法,请告诉我,特别是在Flash中更容易做到。但是,我的具体问题如下。)

我在编程第一关时遇到了障碍。根据我在《DirectX 9.0c 3D游戏编程导论:Frank D.Luna的着色器方法》中读到的内容,“插值”法向量的正确方法是平均三角形顶点的法向量,然后对曲面上的每个片段使用该值。但是,我的片段着色器将插值法线向量,这将导致为曲面绘制渐变而不是纯色


如何让AGAL进行必要的平均而不是插值?

我认为您需要复制顶点,以便每个三角形都有自己的三个顶点,而不是与任何其他三角形共享。三角形每个顶点的法线应为平均法线:三角形的所有三条法线都相同,因此插值不会改变。我知道这并不理想,但我不知道还有什么其他的解决办法

在OpenGL中,您可以在几何体着色器中计算平均法线,或者使用“平坦”限定符,以便不插值法线,但我认为您不能在AGAL中执行这两种操作


了解更多信息。

我认为您需要复制顶点,以便每个三角形都有自己的三个顶点,而不是与任何其他三角形共享。三角形每个顶点的法线应为平均法线:三角形的所有三条法线都相同,因此插值不会改变。我知道这并不理想,但我不知道还有什么其他的解决办法

在OpenGL中,您可以在几何体着色器中计算平均法线,或者使用“平坦”限定符,以便不插值法线,但我认为您不能在AGAL中执行这两种操作


更多信息。

@gamecoder我不确定是否有任何(减去几何体着色器)可以在AGAL中实现,但我想您可能会感兴趣。@gamecoder我不确定是否有任何(减去几何体着色器)可以在AGAL中实现,但我想您可能会感兴趣。