java – 在Libgdx中实现简单运动模糊的意外结果
在附加的两张照片中,libgdx的桌面屏幕截图功能如预期.不幸的是,我的Galaxy Nexus屏幕截图不如预期的那样.我正在尝试创建一个简单的运动模糊或足迹效果.
在我的桌面上渲染我的预期. 不像我预期的那样在我的Galaxy nexus上渲染. 在渲染期间,圆形纹理绘制在for循环中,并且使用在圆圈之前绘制的0,0f的RGBA的像素图来实现效果. screenClearSprite创建 Pixmap screenClearPixmap = new Pixmap(256,256,Format.RGBA8888); screenClearPixmap.setColor(Color.rgba8888(0,0.1f)); screenClearPixmap.fillRectangle(0,256); screenClearTexture = new Texture(screenClearPixmap); screenClearSprite = new Sprite(screenClearTexture); screenClearSprite.setSize(screenWidth,screenHeight); screenClearPixmap.dispose(); 给予 batch.begin(); font.draw(batch,"fps:" + Gdx.graphics.getFramesPerSecond(),20); screenClearSprite.draw(batch); for (int i = 0; i < circleBodies.size(); i++) { tempPos = circleBodies.get(i).getPosition(); batch.draw(circleTexture,(tempPos.x * SCALE) + screenWidthHalf - circleSizeHalf,(tempPos.y * SCALE) + screenHeightHalf - circleSizeHalf); } batch.end(); 那我做错了什么?也许有更好的方式来获得运动的“运动模糊”效果? 解决方法
这里有一种不同的方法,您可以在每次使用纯色和无alpha时清除屏幕.
这意味着你必须修改你的代码.关于这件事的好处是,你所做的这样做有一些缺点:它会模糊所有的运动,而不仅仅是球.除非你很小心,否则会很快产生丑陋的结果/文物. >做你现在做的一样,而不是把球画到批处理,把它们绘制到纹理/位图/任何东西.然后每个帧在球图像上添加一个alpha混合图像,然后将球画在当前位置上.然后将该图像添加到您的屏幕.非常喜欢你现在在做,除了你画别的东西,保持它.这样,您就不必依赖于您正在绘制的视口,而且可以将所有内容都分开.该方法类似于绘制到累加缓冲区.而不是按照你的方式做,你可以跟踪每个球的最新位置.然后画出所有的每一帧,与不同的alpha.这很容易实现.如果您有很多球或大的n,可能会导致许多绘图调用,但如果不是太多,则不应该限制您的fps并给出很好的控制. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |