我觉得我遗漏了一些基本的概念,为什么我在移动磁贴地图时会闪烁。
我创建了一个层。在其中,我添加了一个TMXTiledMap。
_tileMap = TMXTiledMap::create("TMX/32Map.tmx");
_tileMap->setScale(1.f);
_floorLayer = _tileMap->getLayer("Floor");
this->addChild(_tileMap);
for(const auto& l : _tileMap->getChildren()) {
static_cast<SpriteBatchNode*>(l)->getTexture()->setAliasTexParameters();
}
this->scheduleUpdate();在更新中,我移动了图层。
Vec2 newPos = this->getPosition();
newPos.x = (newPos.x - 1);
newPos.y = (newPos.y - 1);
this->setPosition(newPos);我意识到我不是用dt来移动它,如果我用dt来移动它,我会得到整个图层的整体跳动。我知道这是因为它渲染部分像素的方式。但是如果我像上面那样移动一个像素,我会在屏幕上看到这组#外观的线条,大约64个像素左右,大约224个像素左右
也就是说,当窗口为1024x768时。如果我创建一个320x240的窗口,我看不到线条,如果我设置为640x480,我只能在靠近屏幕边缘的左侧和右侧看到它们。
最终,我只想平滑地滚动磁贴地图。任何帮助都会非常感谢,因为我似乎不能开始这个项目。
发布于 2015-08-24 01:13:16
对我来说,可行的解决方案是将ccConfig.h中的CC_FIX_ARTIFACTS_BY_STRECHING_TEXEL从1改为0。在cocos/base/中找到ccConfig.h。
https://stackoverflow.com/questions/31064080
复制相似问题