no stuttering zoom (inefficient)

This commit is contained in:
minjaesong
2019-08-12 03:04:16 +09:00
parent 7077bf9fcf
commit 974c357d5e
3 changed files with 26 additions and 13 deletions

View File

@@ -250,11 +250,17 @@ object IngameRenderer : Disposable {
aTex.bind(1)
Gdx.gl.glActiveTexture(GL20.GL_TEXTURE0) // so that batch that comes next will bind any tex to it
batch.inUse {
blendNormal(batch)
batch.shader = shaderBlendGlow
shaderBlendGlow.setUniformi("tex1", 1)
batch.draw(rgbTex, 0f, 0f, rgbTex.width * zoom, rgbTex.height * zoom)
batch.draw(rgbTex,
-0.5f * rgbTex.width * zoom + 0.5f * rgbTex.width,
-0.5f * rgbTex.height * zoom + 0.5f * rgbTex.height,
rgbTex.width * zoom,
rgbTex.height * zoom
)
}
@@ -268,8 +274,12 @@ object IngameRenderer : Disposable {
batch.inUse {
blendNormal(batch)
batch.shader = null
batch.draw(rgbTex, 0f, 0f, rgbTex.width * zoom, rgbTex.height * zoom)
batch.draw(rgbTex,
-0.5f * rgbTex.width * zoom + 0.5f * rgbTex.width,
-0.5f * rgbTex.height * zoom + 0.5f * rgbTex.height,
rgbTex.width * zoom,
rgbTex.height * zoom
)
// indicator
batch.color = Color.RED
@@ -291,8 +301,12 @@ object IngameRenderer : Disposable {
batch.inUse {
blendNormal(batch)
batch.shader = null
batch.draw(aTex, 0f, 0f, aTex.width * zoom, aTex.height * zoom)
batch.draw(aTex,
-0.5f * aTex.width * zoom + 0.5f * aTex.width,
-0.5f * aTex.height * zoom + 0.5f * aTex.height,
aTex.width * zoom,
aTex.height * zoom
)
// indicator
batch.color = Color.WHITE

View File

@@ -21,7 +21,7 @@ class UIScreenZoom : UICanvas(
override var width = AppLoader.fontGame.getWidth(zoomText)
override var height = AppLoader.fontGame.lineHeight.toInt()
override var openCloseTime = 0.3f
override var openCloseTime = 0.2f
override val mouseUp = false

View File

@@ -2,7 +2,6 @@ package net.torvald.terrarum.worlddrawer
import com.jme3.math.FastMath
import net.torvald.terrarum.AppLoader
import net.torvald.terrarum.Terrarum
import net.torvald.terrarum.floorInt
import net.torvald.terrarum.gameactors.ActorWBMovable
import net.torvald.terrarum.gameactors.ActorWithBody
@@ -15,8 +14,8 @@ import org.dyn4j.geometry.Vector2
object WorldCamera {
private val TILE_SIZE = CreateTileAtlas.TILE_SIZE
val zoom: Float
get() = Terrarum.ingame?.screenZoom ?: 1f
//val zoom: Float
// get() = Terrarum.ingame?.screenZoom ?: 1f
var x: Int = 0 // left position
private set
@@ -27,9 +26,9 @@ object WorldCamera {
var yEnd: Int = 0 // bottom position
private set
inline val gdxCamX: Float // centre position
get() = (x + width / 2f * zoom).toInt().toFloat()
get() = xCentre.toFloat()
inline val gdxCamY: Float// centre position
get() = (y + height / 2f * zoom).toInt().toFloat()
get() = yCentre.toFloat()
var width: Int = 0
private set
var height: Int = 0
@@ -44,8 +43,8 @@ object WorldCamera {
fun update(world: GameWorld, player: ActorWithBody?) {
if (player == null) return
width = FastMath.ceil(AppLoader.screenW / zoom) // div, not mul
height = FastMath.ceil(AppLoader.screenH / zoom)
width = AppLoader.screenW//FastMath.ceil(AppLoader.screenW / zoom) // div, not mul
height = AppLoader.screenH//FastMath.ceil(AppLoader.screenH / zoom)
// TOP-LEFT position of camera border