Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.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
C# 列出三角形内像素的坐标_C#_Math_Xna - Fatal编程技术网

C# 列出三角形内像素的坐标

C# 列出三角形内像素的坐标,c#,math,xna,C#,Math,Xna,我正在用C#和XNA做一个游戏,我试图想出一种方法来渲染大规模地形,而不需要使用大量内存或通过硬编码到XNA中的多边形限制 到目前为止,我的解决方案是创建一个巨大的heightmap,并在游戏开始时在初始化阶段将该heightmap加载到内存中。然后,仅生成离摄影机最近的地形。这是通过投影一个三角形来实现的,该三角形的顶点是角色,其他两个端点延伸到角色查看区域的侧面。然后,高度贴图上三角形内部的所有像素都被渲染并绘制到游戏中,从而只渲染所看到的内容 问题是,我已经成功地找到了三角形的三个顶点(我

我正在用C#和XNA做一个游戏,我试图想出一种方法来渲染大规模地形,而不需要使用大量内存或通过硬编码到XNA中的多边形限制

到目前为止,我的解决方案是创建一个巨大的heightmap,并在游戏开始时在初始化阶段将该heightmap加载到内存中。然后,仅生成离摄影机最近的地形。这是通过投影一个三角形来实现的,该三角形的顶点是角色,其他两个端点延伸到角色查看区域的侧面。然后,高度贴图上三角形内部的所有像素都被渲染并绘制到游戏中,从而只渲染所看到的内容

问题是,我已经成功地找到了三角形的三个顶点(我想,在获得地形渲染之前无法进行测试)。现在,我需要为三角形中的每个像素找到一个坐标列表-仅限整数,因为我只需要一个像素列表来渲染

我知道这听起来有点混乱,所以这里是要点:

我有一个图像,我在图像上投射一个三角形。关于那个三角形我只知道三个顶点。我需要三角形内的像素列表

我已经在谷歌上搜索了大概20分钟了,我想我应该继续在这里发布一些东西,因为我尝试做的事情并不那么普遍。如果我找到答案,我一定会把它贴在这里

但在那之前,有人能告诉我如何做到这一点吗

编辑:请给我一个公式。如果你能提供一个公式或算法,以及一个解释,那就太完美了

编辑:我发布了一个新问题,因为我放弃了这种渲染大型地形的方法。问题是。

从这里开始:


这里没有提到的一个非常重要的问题是边界上的像素化问题。

我当然不想阻止你去尝试和享受乐趣,但是当一个点(或其中的一个集合)位于相机平台内时,计算的数学可能会更快/更容易(不仅仅是因为现有的基础设施可以提供帮助)。如果你真的对大型地形的高性能渲染感兴趣,你可能想花一些时间研究诸如实例化和公告牌之类的主题。@lzcd是的,我现在对几乎任何东西都很开放。我会看看并研究实例化和公告牌,看看是否有机会让它们发挥作用。因为玩家可能会快速转向,你必须在每一帧的视锥中发送所有的高度数据,这将占用相当多的带宽。我想你最好将你的地形分割成块,将离玩家最近的块加载到GPU上,然后随着玩家的移动在背景中输入新的块。如何你的高度图有多大?你希望玩家能看到多少(360°视角)立刻?@Andrew透视矩阵是45度。至于距离,用户应该能够在高度图上看到512个像素远,这意味着在游戏中可以放大5倍到2500个。恐怕我不知道你的高度图有多大,或者说是可见区域。你能用绝对数目的多边形来描述它吗?