qian-o / SabaSharp

mmd播放器
21 stars 0 forks source link

Object reference not set to an instance of an object. #5

Closed zy974400763 closed 6 months ago

zy974400763 commented 6 months ago

你好,直接运行项目会报加载pmx模型时顶点集合空指针,是为什么呢? Unhandled exception. System.NullReferenceException: Object reference not set to an instance of an object. at Saba.PmxModel.Load(String path, String mmdDataDir) in D:\Project\CSharp\SabaSharp-master\Saba\PmxModel.cs:line 297 at SabaViewer.MikuMikuDance.LoadModel(String modelPath, String vmdPath) in D:\Project\CSharp\SabaSharp-master\SabaViewer\MikuMikuDance.cs:line 395 at SabaViewer.MikuMikuDance..ctor(GL gl, String modelPath, String vmdPath) in D:\Project\CSharp\SabaSharp-master\SabaViewer\MikuMikuDance.cs:line 68 at SabaViewer.Scene1.Load() in D:\Project\CSharp\SabaSharp-master\SabaViewer\Scene1.cs:line 20 at SabaViewer.Contracts.Game.<.ctor>b__30_0() in D:\Project\CSharp\SabaSharp-master\SabaViewer\Contracts\Game.cs:line 69 at Silk.NET.Windowing.Internals.ViewImplementationBase.Initialize() at Silk.NET.Windowing.WindowExtensions.Run(IView view) at SabaViewer.Contracts.Game.Run() in D:\Project\CSharp\SabaSharp-master\SabaViewer\Contracts\Game.cs:line 178 at Program.Main(String[] args) in D:\Project\CSharp\SabaSharp-master\SabaViewer\Program.cs:line 11

qian-o commented 6 months ago

可以在报错的代码截下图吗?

zy974400763 commented 6 months ago

微信截图_20240325173325 在这里给FixedArray类型的模型顶点赋值的时候

qian-o commented 6 months ago

在创建FixedArray时,按理来说不会存在null的情况,如果是抛异常的话也不会往下继续执行。可以断点调试下吗? image image

zy974400763 commented 6 months ago

1711364801618 1711364856386 FixedArray对象应该是有正常创建,但是获取FixedArray的元素的时候报空指针,感觉应该是分配非托管堆的时候有问题,不知道我的理解对不对

qian-o commented 6 months ago

看样子内存分配失败了,.net内置的分配应该不会出问题。可能是通过opencl分配的有问题。 image 这块先注掉再试试呢。

zy974400763 commented 6 months ago

注释完可以了,谢谢大佬。对了OpenCL分配失败会不会是我电脑显卡驱动的问题?

qian-o commented 6 months ago

跟驱动没关系,可能硬件不支持svm内存,这地方我检测的不够完善。方便的话可以提供下显卡型号吗?

zy974400763 commented 6 months ago

我是核显/(ㄒoㄒ)/~~

qian-o commented 6 months ago

好吧,那这个 issues 就先关掉了。