mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-18 03:44:54 -04:00
option to disable mipmap generation
This commit is contained in:
parent
61a0d6e655
commit
ea45a04b9b
@ -36,7 +36,7 @@ class BitmapFontProvider(
|
||||
|
||||
init {
|
||||
val charRows = data["chars"].asJsonList()
|
||||
val texture = renderWindow.textureManager.staticTextures.createTexture(data["file"].toResourceLocation().texture())
|
||||
val texture = renderWindow.textureManager.staticTextures.createTexture(data["file"].toResourceLocation().texture(), mipmaps = false)
|
||||
texture.load(renderWindow.connection.assetsManager)
|
||||
|
||||
val height = texture.size.y / charRows.size
|
||||
|
@ -41,7 +41,7 @@ class LegacyUnicodeFontProvider(
|
||||
char += UNICODE_PAGE_SIZE
|
||||
continue
|
||||
}
|
||||
val texture = renderWindow.textureManager.staticTextures.createTexture(template.format("%02x".format(page)).toResourceLocation().texture())
|
||||
val texture = renderWindow.textureManager.staticTextures.createTexture(template.format("%02x".format(page)).toResourceLocation().texture(), mipmaps = false)
|
||||
for (y in 0 until UNICODE_PAGE_SIZE / CHAR_SIZE) {
|
||||
val yStart = PIXEL.y * y * CHAR_SIZE
|
||||
val yEnd = PIXEL.y * (y + 1) * CHAR_SIZE
|
||||
|
@ -23,7 +23,7 @@ interface TextureArray {
|
||||
val state: TextureArrayStates
|
||||
|
||||
operator fun get(resourceLocation: ResourceLocation): AbstractTexture?
|
||||
fun createTexture(resourceLocation: ResourceLocation, default: () -> AbstractTexture = { PNGTexture(resourceLocation) }): AbstractTexture
|
||||
fun createTexture(resourceLocation: ResourceLocation, mipmaps: Boolean = true, default: () -> AbstractTexture = { PNGTexture(resourceLocation, generateMipMaps = mipmaps) }): AbstractTexture
|
||||
|
||||
fun preLoad()
|
||||
|
||||
|
@ -38,6 +38,7 @@ interface AbstractTexture {
|
||||
var renderData: TextureRenderData
|
||||
|
||||
var data: ByteBuffer?
|
||||
val generateMipMaps: Boolean
|
||||
|
||||
fun load(assetsManager: AssetsManager)
|
||||
|
||||
@ -48,6 +49,9 @@ interface AbstractTexture {
|
||||
var data = data!!
|
||||
|
||||
images += data
|
||||
if (!generateMipMaps) {
|
||||
return images.toTypedArray()
|
||||
}
|
||||
|
||||
for (i in 1 until OpenGLTextureArray.MAX_MIPMAP_LEVELS) {
|
||||
val mipMapSize = Vec2i(size.x shr i, size.y shr i)
|
||||
|
@ -29,6 +29,7 @@ class MemoryTexture(
|
||||
override val resourceLocation: ResourceLocation,
|
||||
override val size: Vec2i,
|
||||
override var properties: ImageProperties = ImageProperties(),
|
||||
override val generateMipMaps: Boolean = true,
|
||||
generator: ((x: Int, y: Int) -> RGBColor)? = null,
|
||||
) : AbstractTexture {
|
||||
override lateinit var textureArrayUV: Vec2
|
||||
|
@ -29,7 +29,10 @@ import java.nio.ByteBuffer
|
||||
import javax.imageio.ImageIO
|
||||
|
||||
|
||||
class PNGTexture(override val resourceLocation: ResourceLocation) : AbstractTexture {
|
||||
class PNGTexture(
|
||||
override val resourceLocation: ResourceLocation,
|
||||
override val generateMipMaps: Boolean = true,
|
||||
) : AbstractTexture {
|
||||
override lateinit var renderData: TextureRenderData
|
||||
|
||||
override lateinit var textureArrayUV: Vec2
|
||||
|
@ -30,6 +30,8 @@ class SpriteTexture(private val original: AbstractTexture) : AbstractTexture {
|
||||
override var properties: ImageProperties by original::properties
|
||||
override var renderData: TextureRenderData by original::renderData
|
||||
override val transparency: TextureTransparencies by original::transparency
|
||||
override val generateMipMaps: Boolean
|
||||
get() = original.generateMipMaps
|
||||
|
||||
override var state: TextureStates = TextureStates.DECLARED
|
||||
private set
|
||||
|
@ -51,7 +51,7 @@ class OpenGLTextureArray(
|
||||
private val lastTextureId = IntArray(TEXTURE_RESOLUTION_ID_MAP.size)
|
||||
|
||||
|
||||
override fun createTexture(resourceLocation: ResourceLocation, default: () -> AbstractTexture): AbstractTexture {
|
||||
override fun createTexture(resourceLocation: ResourceLocation, mipmaps: Boolean, default: () -> AbstractTexture): AbstractTexture {
|
||||
var texture = textures[resourceLocation]
|
||||
|
||||
// load .mcmeta
|
||||
@ -136,7 +136,7 @@ class OpenGLTextureArray(
|
||||
|
||||
|
||||
@Synchronized
|
||||
private fun loadSingleArray(resolution: Int, textures: MutableList<AbstractTexture>): Int {
|
||||
private fun loadSingleArray(resolution: Int, textures: List<AbstractTexture>): Int {
|
||||
val textureId = glGenTextures()
|
||||
glBindTexture(GL_TEXTURE_2D_ARRAY, textureId)
|
||||
glTexParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_WRAP_S, GL_REPEAT)
|
||||
@ -155,8 +155,15 @@ class OpenGLTextureArray(
|
||||
|
||||
val renderData = texture.renderData as OpenGLTextureData
|
||||
for ((level, data) in mipMaps.withIndex()) {
|
||||
val size = texture.size shr level
|
||||
glTexSubImage3D(GL_TEXTURE_2D_ARRAY, level, 0, 0, renderData.index, size.x, size.y, level + 1, GL_RGBA, GL_UNSIGNED_BYTE, data)
|
||||
if (texture.generateMipMaps) {
|
||||
val size = texture.size shr level
|
||||
|
||||
glTexSubImage3D(GL_TEXTURE_2D_ARRAY, level, 0, 0, renderData.index, size.x, size.y, level + 1, GL_RGBA, GL_UNSIGNED_BYTE, data)
|
||||
} else {
|
||||
val size = texture.size
|
||||
|
||||
glTexSubImage3D(GL_TEXTURE_2D_ARRAY, level, 0, 0, renderData.index, size.x, size.y, level + 1, GL_RGBA, GL_UNSIGNED_BYTE, mipMaps[0])
|
||||
}
|
||||
}
|
||||
|
||||
texture.data = null
|
||||
|
Loading…
x
Reference in New Issue
Block a user