Urhosharp Material.FromImage 无法处理某些 jpg 文件

Urhosharp Material.FromImage not woking with some jpg files

我在我的项目中使用 Xamarin.Forms 和 Urhosharp。我正在尝试从球体上的图像设置矩阵,在我的 Android 项目中一切正常,但在 iOS 项目中,当我从一些 jpg 文件设置 material 时它没有无法正常工作,我得到的只是黑屏。

这是正确工作的 jpg:

这是另一个没有的:

这是我的代码:

            var scene = new Scene();
        scene.CreateComponent<Octree>();


        // Node (Rotation and Position)
        var node = scene.CreateChild("room");
        node.Position = new Vector3(0, 0, 0);
        //node.Rotation = new Quaternion(10, 60, 10);
        node.SetScale(1f);

        // Model
        var modelObject = node.CreateComponent<StaticModel>();
        modelObject.Model = ResourceCache.GetModel("CustomModels/SmoothSphere.mdl");

        var zoneNode = scene.CreateChild("Zone");
        var zone = zoneNode.CreateComponent<Zone>();
        zone.SetBoundingBox(new BoundingBox(-300.0f, 300.0f));
        zone.AmbientColor = new Color(1f, 1f, 1f);

        //get image from byte[]

        //var url = "http://www.wsj.com/public/resources/media/0524yosemite_1300R.jpg";
        //var wc = new WebClient() { Encoding = Encoding.UTF8 };

        //var mb = new MemoryBuffer(wc.DownloadData(new Uri(url)));
        var mb = new MemoryBuffer(PanoramaBuffer.PanoramaByteArray);
        var image = new Image(Context) { Name = "MyImage" };
        image.Load(mb);

        //or from resource

        //var image = ResourceCache.GetImage("Textures/grave.jpg");
        var isFliped = image.FlipHorizontal();
        if (!isFliped)
        {
            throw new Exception("Unsuccessful flip");
        }
        var m = Material.FromImage("1.jpg");
        m.SetTechnique(0, CoreAssets.Techniques.DiffNormal, 0, 0);
        m.CullMode = CullMode.Cw;
        //m.SetUVTransform(Vector2.Zero, 0, 0);
        modelObject.SetMaterial(m);

        // Camera
        var cameraNode = scene.CreateChild("camera");
        _camera = cameraNode.CreateComponent<Camera>();
        _camera.Fov = 75.8f;
        _initialZoom = _camera.Zoom;

        // Viewport
        Renderer.SetViewport(0, new Viewport(scene, _camera, null));

我已经尝试更改压缩级别、ICCC 配置文件和...

我在 forums.xamarin.com 中问了同样的问题,有人回答了这个问题,我将在这里分享:

在 iOS 中,每个纹理都需要具有两倍分辨率的幂,例如 256 x 256 或 1024 x 512。检查这是否是问题所在。另外检查您是否使用最新的 UrhoSharp 版本。

还要确保图像在 iOS 项目中设置为 BundleResource。