Graphics Cocos2d-x setContentSize的图形质量较差

Graphics Cocos2d-x setContentSize的图形质量较差,graphics,cocos2d-x,sprite,screen-resolution,Graphics,Cocos2d X,Sprite,Screen Resolution,我想创建与屏幕大小有关的精灵。 即:精灵大小等于屏幕宽度*0.2 我使用setContentSize和setScale但它的图形质量很差。 我读过关于多分辨率支持的文章,但在这种情况下不起作用,因为我需要精灵大小适应任何屏幕大小 在iPhone7上测试时,我将图像从512x512缩放到64x64 这是cocos2d-x的错误,或者无论如何要将其存档?根据设备大小对其进行相应的缩放 yourSprite->setScale(mainScene->getContentSize().wid

我想创建与屏幕大小有关的精灵。 即:精灵大小等于屏幕宽度*0.2

我使用
setContentSize
setScale
但它的图形质量很差。 我读过关于多分辨率支持的文章,但在这种情况下不起作用,因为我需要精灵大小适应任何屏幕大小

在iPhone7上测试时,我将图像从512x512缩放到64x64


这是cocos2d-x的错误,或者无论如何要将其存档?

根据设备大小对其进行相应的缩放

yourSprite->setScale(mainScene->getContentSize().width / yourSprite->getContentSize().width * 0.2, mainScene->getContentSize().width / yourSprite->getContentSize().width * 0.2);

并且不要使用
setContentSize

根据设备大小对其进行相应的缩放

yourSprite->setScale(mainScene->getContentSize().width / yourSprite->getContentSize().width * 0.2, mainScene->getContentSize().width / yourSprite->getContentSize().width * 0.2);

不要使用
setContentSize

您可以根据根据设备屏幕大小和使用的分辨率策略计算的内容比例因子来缩放精灵

auto sprite= Sprite::create("xyz.png")
sprite->setScale(Director::getInstance()->getContentScaleFactor());

您可以根据根据设备屏幕大小和正在使用的分辨率策略计算的内容比例因子来缩放精灵

auto sprite= Sprite::create("xyz.png")
sprite->setScale(Director::getInstance()->getContentScaleFactor());


我尝试过使用
setScale
,但结果与
setContentSize
相同。只有当图像大小接近目标大小(如150->32)时,它才起作用,但512->32将非常糟糕。对于大小的主要变化(512->32),您需要创建不同大小/分辨率的资源,并根据设备分辨率设置该资源的路径。这是一个理想的解决方案。很明显,如果我们放大或缩小任何数量,我们都在降低资源的质量。放大会降低图形质量,但从大到小的缩放必须保持质量。你可以在这里看到这幅图:我发现我只有在real divice(iPhone 7)上才会遇到这种问题,在iPhone 6模拟器上用
setScale
进行测试,这很好。这是cocos的一个缺陷吗?无论以何种方式上下缩放,图像质量都会根据缩放范围而降低。在链接中,您缩放第一幅图像
512->32
,因此缩放因子为
.0625
,另一幅为
64->32
,因此缩放因子为
.5
。放大/缩小的幅度越大,图像的质量就越差。我不知道cocos在缩放方面做了什么,但任何语言上的任何调整图像大小的机制都可以在从大到小的缩放过程中提供可接受的质量。将2048调整为32获得与64到32相同的结果。我尝试过使用
setScale
,但使用
setContentSize
的结果相同。只有当图像大小接近目标大小(如150->32)时,它才起作用,但512->32将非常糟糕。对于大小的主要变化(512->32),您需要创建不同大小/分辨率的资源,并根据设备分辨率设置该资源的路径。这是一个理想的解决方案。很明显,如果我们放大或缩小任何数量,我们都在降低资源的质量。放大会降低图形质量,但从大到小的缩放必须保持质量。你可以在这里看到这幅图:我发现我只有在real divice(iPhone 7)上才会遇到这种问题,在iPhone 6模拟器上用
setScale
进行测试,这很好。这是cocos的一个缺陷吗?无论以何种方式上下缩放,图像质量都会根据缩放范围而降低。在链接中,您缩放第一幅图像
512->32
,因此缩放因子为
.0625
,另一幅为
64->32
,因此缩放因子为
.5
。放大/缩小的幅度越大,图像的质量就越差。我不知道cocos在缩放方面做了什么,但任何语言上的任何调整图像大小的机制都可以在从大到小的缩放过程中提供可接受的质量。将2048调整为32获得与64到32相同的结果。
setScale
产生与
setContentSize
@TomSawyer相同的结果。也许您正在将该精灵放置到另一个图像大小较小的精灵中?不,我创建了单个精灵。我发现这个错误只发生在real divice上(我使用的是iPhone 7)。使用
setScale
而不是
setContentSize
可以在模拟器上解决此问题。您是否经历过同样的问题?我在这里结结巴巴,唯一的办法就是为不同的尺寸创建多个版本的sprite?不,我没有遇到缩放问题。你可以发布你如何创建精灵以及在哪里添加它吗?
setScale
setContentSize
@TomSawyer的结果相同也许你正在将该精灵放置到另一个具有较小图像大小的精灵中?不,我创建单个精灵。我发现这个错误只发生在real divice上(我使用的是iPhone 7)。使用
setScale
而不是
setContentSize
可以在模拟器上解决此问题。您是否经历过同样的问题?我在这里结结巴巴,唯一的办法就是为不同的尺寸创建多个版本的sprite?不,我没有遇到缩放问题。你可以发布你如何创建精灵以及在哪里添加它吗?