首页 > 解决方案 > Cocos2d-x (4.0) - 整数像素缩放

问题描述

我刚从 Cocos2d 开始,我正在努力让屏幕缩放正确:我有一个设计分辨率为 160x144 像素的 glview,我希望能够以整数倍放大这个窗口。问题是屏幕上的所有资产都使用某种双线性过滤器进行了缩放,真的弄乱了游戏的整体外观......下面我现在在我的代码中:

// Set the design resolution
glview->setDesignResolutionSize(designResolutionSize.width, designResolutionSize.height, ResolutionPolicy::SHOW_ALL);
glview->setFrameSize(designResolutionSize.width * SCALE_FACTOR, designResolutionSize.height * SCALE_FACTOR);

其中 SCALE_FACTOR 可以是 2、4、8...

有人知道如何完成这项工作吗?

标签: c++openglcocos2d-x

解决方案


有时你最好清理自己的烂摊子。我为我的问题找到了一个解决方案,乍一看可能看起来太极端了,但这非常适合我的需求。只需更改 Texture2D (@CCTexture2D.cpp) 的构造函数即可全局禁用抗锯齿。

Texture2D::Texture2D()
: _pixelFormat(backend::PixelFormat::DEFAULT)
, _pixelsWide(0)
, _pixelsHigh(0)
, _maxS(0.0)
, _maxT(0.0)
, _hasPremultipliedAlpha(false)
, _hasMipmaps(false)
, _antialiasEnabled(false)  // <<< CHANGE HERE!
, _ninePatchInfo(nullptr)
, _valid(true)
, _alphaTexture(nullptr)
{
    backend::TextureDescriptor textureDescriptor;
    textureDescriptor.textureFormat = PixelFormat::NONE;
    _texture = static_cast<backend::Texture2DBackend*>(backend::Device::getInstance()->newTexture(textureDescriptor));
}

这里的样子:

抗锯齿开/关


推荐阅读