1
我目前正试图通过使用来自相机的数据作为环境地图和采样灯来实现环境照明。是OnTangoImageAvailableEventHandler()多线程?
我所做的是
private int noOfSamples = 64;
private int noOfLights = 0;
public void OnTangoImageAvailableEventHandler(TangoEnums.TangoCameraId cameraId, TangoUnityImageData imageBuffer)
{
createSamples(imageBuffer);
}
然后在createSamples():
public void createSamples(TangoUnityImageData imageBuffer)
{
if (m_enableEnvironmentalLighting && noOfLights < noOfSamples)
{
----- generate samples -------
for (int i = 0; i < noOfSamples; i++)
{
---- create light game object, set the position and rgb of the light.
noOfLights++;
}
}
}
这工作正常,在Unity编辑器,它只是创造了第一个64个灯,反射和阴影作品精细。但是,当它位于Tango设备上时,除非我删除noOfLights检查noOfSamples,否则不会创建光源。
删除检查noOfLights < noOfSamples后,在每一帧中都需要再次计算样本,导致性能很差。是否因为OnTangoImageAvailableEventHandler方法是多线程的?有没有办法只创建前64个灯?
谢谢!
谢谢您的回答!出于好奇,而不是使用图像缓冲区,会不会实施ITangoVideoOverlayMultithreaded解决这个问题? – dddddddaxing