@@ -11,6 +11,7 @@ import org.lwjgl.opengl.GL13.*
1111import org.lwjgl.opengl.GL14.*
1212import org.lwjgl.opengl.GL15.*
1313import org.lwjgl.opengl.GL20.*
14+ import org.polyfrost.oneconfig.api.platform.v1.Platform
1415import org.polyfrost.oneconfig.api.ui.v1.api.NanoSvgApi
1516import org.polyfrost.oneconfig.api.ui.v1.api.RendererExt
1617import org.polyfrost.oneconfig.api.ui.v1.api.StbApi
@@ -99,12 +100,11 @@ class GLRendererImpl(private val nsvg: NanoSvgApi, private val stb: StbApi) : Re
99100
100101
101102 // Current batch state
103+ private val viewport = IntArray (4 )
102104 private var count = 0
103105 private var transformDepth = 0
104106 private var scissorDepth = 0
105107 private var transform = IDENTITY .copyOf()
106- private var viewportWidth = 0f
107- private var viewportHeight = 0f
108108 private var pixelRatio = 1f
109109 private var alphaCap = 1f
110110 private var popFlushNeeded = false
@@ -420,8 +420,7 @@ class GLRendererImpl(private val nsvg: NanoSvgApi, private val stb: StbApi) : Re
420420 glUniformMatrix3fv(uTransform, false , transform)
421421 glUseProgram(prevProg)
422422 glDisable(GL_SCISSOR_TEST )
423- viewportWidth = width * pixelRatio
424- viewportHeight = height * pixelRatio
423+ Platform .screen().glViewport(viewport)
425424 this .pixelRatio = pixelRatio
426425 }
427426
@@ -671,15 +670,15 @@ class GLRendererImpl(private val nsvg: NanoSvgApi, private val stb: StbApi) : Re
671670 override fun pushScissor (x : Float , y : Float , width : Float , height : Float ) {
672671 flush()
673672 val nx = (x * pixelRatio).roundToInt()
674- val ny = (viewportHeight - (y + height) * pixelRatio).roundToInt()
673+ val ny = (viewport[ 3 ] - (y + height) * pixelRatio).roundToInt()
675674 val nw = (width * pixelRatio).roundToInt()
676675 val nh = (height * pixelRatio).roundToInt()
677676 scissorStack[scissorDepth++ ] = nx
678677 scissorStack[scissorDepth++ ] = ny
679678 scissorStack[scissorDepth++ ] = nw
680679 scissorStack[scissorDepth++ ] = nh
681680 glEnable(GL_SCISSOR_TEST )
682- glScissor(nx, ny, nw, nh)
681+ glScissor(nx + viewport[ 0 ] , ny + viewport[ 1 ] , nw, nh)
683682 }
684683
685684 override fun pushScissorIntersecting (x : Float , y : Float , width : Float , height : Float ) {
@@ -693,7 +692,7 @@ class GLRendererImpl(private val nsvg: NanoSvgApi, private val stb: StbApi) : Re
693692 val pw = scissorStack[scissorDepth - 2 ]
694693 val ph = scissorStack[scissorDepth - 1 ]
695694 val nx = (x * pixelRatio).roundToInt()
696- val ny = (viewportHeight - (y + height) * pixelRatio).roundToInt()
695+ val ny = (viewport[ 3 ] - (y + height) * pixelRatio).roundToInt()
697696
698697 val ix = maxOf(nx, px)
699698 val iy = maxOf(ny, py)
@@ -706,7 +705,7 @@ class GLRendererImpl(private val nsvg: NanoSvgApi, private val stb: StbApi) : Re
706705 scissorStack[scissorDepth++ ] = ih
707706
708707 glEnable(GL_SCISSOR_TEST )
709- glScissor(ix, iy, iw, ih)
708+ glScissor(ix + viewport[ 0 ] , iy + viewport[ 1 ] , iw, ih)
710709 }
711710
712711 override fun popScissor () {
@@ -717,12 +716,12 @@ class GLRendererImpl(private val nsvg: NanoSvgApi, private val stb: StbApi) : Re
717716 return
718717 }
719718 scissorDepth - = 4
720- val x = scissorStack[scissorDepth - 4 ]
721- val y = scissorStack[scissorDepth - 3 ]
722- val width = scissorStack[scissorDepth - 2 ]
723- val height = scissorStack[scissorDepth - 1 ]
719+ val nx = scissorStack[scissorDepth - 4 ]
720+ val ny = scissorStack[scissorDepth - 3 ]
721+ val nw = scissorStack[scissorDepth - 2 ]
722+ val nh = scissorStack[scissorDepth - 1 ]
724723 glEnable(GL_SCISSOR_TEST )
725- glScissor(x, y, width, height )
724+ glScissor(nx + viewport[ 0 ], ny + viewport[ 1 ], nw, nh )
726725 }
727726
728727 override fun globalAlpha (alpha : Float ) {
@@ -883,7 +882,7 @@ class GLRendererImpl(private val nsvg: NanoSvgApi, private val stb: StbApi) : Re
883882 return fonts.getOrPut(font.resourcePath.hashCode() + renderSize.toInt()) {
884883 val data = font.load {
885884 LOGGER .error(" Failed to load font: $font " , it)
886- return @getOrPut fonts[PolyUI .defaultFonts.regular.resourcePath.hashCode() + renderSize .toInt()]
885+ return @getOrPut fonts[PolyUI .defaultFonts.regular.resourcePath.hashCode() + 12f .toInt()]
887886 ? : throw IllegalStateException (" Default font couldn't be loaded" )
888887 }.toDirectByteBuffer()
889888 FontAtlas (data, renderSize)
0 commit comments