具有3D均匀网格,为了节省大型模型中的存储器,不需要保存空单元(不与任何对象重叠的单元).为了这个目的,我在c#中使用Dictionary.尽管性能已经降低,但这仍然比创建3D网格时出现异常更好.现在我的问题是找到一个快速哈希函数,将网格的3d整数坐标映射到唯一的数字.
我已经尝试过((x*73856093 + y*19349669 + z*83492791))%n,它并不总是生成一个唯一的数字.
更新:
海因兹是对的.AutoCAD Polyline是引用类型,而不是结构.好点子.但我简化了场景,因为我在实际应用程序中处理的是一个AutoCAD对象,它是struct.所以请将两者都视为struct而不是引用类型.
我正在寻找正确的方法来应对这种情况,如果有人能够阐明或帮助我更好地理解,我将不胜感激.
数据访问层中有一个接口,有两个实现来处理两个不同的提供程序:AutoCad和Sketchup API.
interface IEntity
{
void object GetPoly();
void void InsertPoly(object poly);
}
class AutocadEntity
{
void object GetPoly()
{
//calling Autocad APIs
return Autocad Polyline object
}
void InsertPoly(object poly){...}
}
Run Code Online (Sandbox Code Playgroud)
GetPoly的Autocad实现将返回Polyline对象,因为这是在Autocad API中定义为折线,而Sketchup将返回Face对象.
我已经将返回类型(和参数)定义为对象来处理这些不同的类型.成本是拳击/拆箱发生时的性能问题.并且它更大胆地显示返回/参数是object []的位置.
我首先想知道方法返回/参数类型泛型是解决方案,但我认为它不会是因为实现是特定于类型的.
通过阅读Wikipead 页面,我了解到 GeForce RTX 型号有 RT 核心和 Tensor 核心。我的问题是我的 Cuda 代码使用了哪些核心?我可以控制吗?
我有光线追踪内核并想从 RT 内核中受益?RT 核心是默认使用的还是有一个标志来启用它?