mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-18 03:44:54 -04:00
world renderer: make text mesh ondemand
This commit is contained in:
parent
5b6b6cf9a7
commit
595c4c2505
@ -50,9 +50,9 @@ class WorldGUIConsumer(val mesh: SingleWorldMesh, val transform: Mat4, val light
|
||||
}
|
||||
|
||||
fun offset(x: Float) {
|
||||
transform[3, 0] = transform[0, 0] * x + transform[3, 0]
|
||||
transform[3, 1] = transform[0, 1] * x + transform[3, 1]
|
||||
transform[3, 2] = transform[0, 2] * x + transform[3, 2]
|
||||
transform[3, 3] = transform[0, 3] * x + transform[3, 3]
|
||||
transform[3, 0] += transform[0, 0] * x
|
||||
transform[3, 1] += transform[0, 1] * x
|
||||
transform[3, 2] += transform[0, 2] * x
|
||||
transform[3, 3] += transform[0, 3] * x
|
||||
}
|
||||
}
|
||||
|
@ -24,15 +24,21 @@ abstract class Mesh(
|
||||
val renderWindow: RenderWindow,
|
||||
private val struct: MeshStruct,
|
||||
private val primitiveType: PrimitiveTypes = renderWindow.renderSystem.preferredPrimitiveType,
|
||||
initialCacheSize: Int = 10000,
|
||||
var initialCacheSize: Int = 10000,
|
||||
val clearOnLoad: Boolean = true,
|
||||
data: DirectArrayFloatList? = null,
|
||||
val onDemand: Boolean = false,
|
||||
) {
|
||||
val order = renderWindow.renderSystem.primitiveMeshOrder
|
||||
val reversedOrder = order.reversedArray()
|
||||
private var _data: DirectArrayFloatList? = data ?: DirectArrayFloatList(initialCacheSize)
|
||||
private var _data: DirectArrayFloatList? = data ?: if (onDemand) null else DirectArrayFloatList(initialCacheSize)
|
||||
var data: DirectArrayFloatList
|
||||
get() = _data as DirectArrayFloatList
|
||||
get() {
|
||||
if (onDemand && _data == null) {
|
||||
_data = DirectArrayFloatList(initialCacheSize)
|
||||
}
|
||||
return _data as DirectArrayFloatList
|
||||
}
|
||||
set(value) {
|
||||
_data = value
|
||||
}
|
||||
|
@ -20,7 +20,7 @@ import de.bixilon.minosoft.gui.rendering.system.base.texture.texture.AbstractTex
|
||||
import de.bixilon.minosoft.gui.rendering.util.mesh.Mesh
|
||||
import de.bixilon.minosoft.gui.rendering.util.mesh.MeshStruct
|
||||
|
||||
class SingleWorldMesh(renderWindow: RenderWindow, initialCacheSize: Int) : Mesh(renderWindow, SectionArrayMeshStruct, initialCacheSize = initialCacheSize) {
|
||||
class SingleWorldMesh(renderWindow: RenderWindow, initialCacheSize: Int, onDemand: Boolean = false) : Mesh(renderWindow, SectionArrayMeshStruct, initialCacheSize = initialCacheSize, onDemand = onDemand) {
|
||||
var distance: Float = 0.0f // Used for sorting
|
||||
|
||||
fun addVertex(position: FloatArray, uv: Vec2, texture: AbstractTexture, tintColor: Int, light: Int) {
|
||||
|
@ -30,7 +30,7 @@ class WorldMesh(
|
||||
var opaqueMesh: SingleWorldMesh? = SingleWorldMesh(renderWindow, if (smallMesh) 1000 else 100000)
|
||||
var translucentMesh: SingleWorldMesh? = SingleWorldMesh(renderWindow, if (smallMesh) 1000 else 10000)
|
||||
var transparentMesh: SingleWorldMesh? = SingleWorldMesh(renderWindow, if (smallMesh) 1000 else 20000)
|
||||
var textMesh: SingleWorldMesh? = SingleWorldMesh(renderWindow, if (smallMesh) 1000 else 20000)
|
||||
var textMesh: SingleWorldMesh? = SingleWorldMesh(renderWindow, if (smallMesh) 1000 else 200000, onDemand = true)
|
||||
var blockEntities: Set<BlockEntityRenderer<*>>? = null
|
||||
|
||||
// used for frustum culling
|
||||
|
Loading…
x
Reference in New Issue
Block a user