我在我的项目中使用Xamarin.Forms和Urhosharp。我正在尝试从一个球面上的图像中设置一个矩阵,在我的安卓项目中一切正常,但是在iOS项目中,当我从一些jpg文件中设置材料时,它不工作,我得到的只是一个黑色的屏幕。
以下是正确工作的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配置文件和.
发布于 2019-11-29 11:03:00
我在forums.xamarin.com中问了同样的问题,有人回答了这个问题,我将在这里分享它:
在iOS中,每个纹理都需要有两个分辨率的幂,比如256x256或1024x512。看看这是否是问题所在。另外,请检查您是否使用了最新的UrhoSharp版本。
还要确保在BundleResource项目中将图像设置为iOS。
https://stackoverflow.com/questions/59089199
复制相似问题