1
0
mirror of https://github.com/kami-blue/client synced 2025-01-02 21:12:16 +00:00

Renamed buffer fields to vertex element

This commit is contained in:
Xiaro 2021-02-05 14:55:17 -05:00
parent daa136f532
commit 92d24a3cda
No known key found for this signature in database
GPG Key ID: 996D265D6E155377
2 changed files with 36 additions and 36 deletions

View File

@ -10,9 +10,9 @@ import java.nio.ByteBuffer
class VertexBuffer private constructor(
override val usage: Int,
override val buffer: ByteBuffer,
private val posBuffer: PosVertexElement?,
private val colorBuffer: ColorVertexElement?,
private val texPosBuffer: TexVertexElement?
private val posVertexElement: PosVertexElement?,
private val colorVertexElement: ColorVertexElement?,
private val texVertexElement: TexVertexElement?
) : AbstractBuffer() {
override val target: Int get() = GL_ARRAY_BUFFER
@ -20,7 +20,7 @@ class VertexBuffer private constructor(
private var size = 0
fun put(block: VertexBuilder.() -> Unit) {
VertexBuilder(buffer, posBuffer, colorBuffer, texPosBuffer).apply(block).build()
VertexBuilder(buffer, posVertexElement, colorVertexElement, texVertexElement).apply(block).build()
size++
}
@ -51,33 +51,33 @@ class VertexBuffer private constructor(
fun preRender() {
bindBuffer()
posBuffer?.preRender()
colorBuffer?.preRender()
texPosBuffer?.preRender()
posVertexElement?.preRender()
colorVertexElement?.preRender()
texVertexElement?.preRender()
}
fun postRender() {
posBuffer?.postRender()
colorBuffer?.postRender()
texPosBuffer?.postRender()
posVertexElement?.postRender()
colorVertexElement?.postRender()
texVertexElement?.postRender()
unbindBuffer()
}
class Builder(private val usage: Int, private val capacity: Int = 0x10000) {
private var posBuffer: PosVertexElement? = null
private var colorBuffer: ColorVertexElement? = null
private var texPosBuffer: TexVertexElement? = null
private var posVertexElement: PosVertexElement? = null
private var colorVertexElement: ColorVertexElement? = null
private var texVertexElement: TexVertexElement? = null
fun pos2f() {
posBuffer = object : PosVertexElement() {
posVertexElement = object : PosVertexElement() {
override val vertexSize: Int
get() = 2
}
}
fun pos3f() {
posBuffer = object : PosVertexElement() {
posVertexElement = object : PosVertexElement() {
override val vertexSize: Int
get() = 3
@ -89,33 +89,33 @@ class VertexBuffer private constructor(
}
fun color4b() {
colorBuffer = object : ColorVertexElement() {}
colorVertexElement = object : ColorVertexElement() {}
}
fun tex2f() {
texPosBuffer = object : TexVertexElement() {}
texVertexElement = object : TexVertexElement() {}
}
fun build(): VertexBuffer {
val buffer = prebuild()
return VertexBuffer(usage, buffer, posBuffer, colorBuffer, texPosBuffer)
return VertexBuffer(usage, buffer, posVertexElement, colorVertexElement, texVertexElement)
}
private fun prebuild() : ByteBuffer {
private fun prebuild(): ByteBuffer {
val stride = calcStride()
var offset = 0L
posBuffer?.stride = stride
colorBuffer?.stride = stride
texPosBuffer?.stride = stride
posVertexElement?.stride = stride
colorVertexElement?.stride = stride
texVertexElement?.stride = stride
posBuffer?.offset = offset
offset += posBuffer?.byteSize ?: 0
posVertexElement?.offset = offset
offset += posVertexElement?.byteSize ?: 0
colorBuffer?.offset = offset
offset += colorBuffer?.byteSize ?: 0
colorVertexElement?.offset = offset
offset += colorVertexElement?.byteSize ?: 0
texPosBuffer?.offset = offset
texVertexElement?.offset = offset
return BufferUtils.createByteBuffer(capacity * stride)
}
@ -123,9 +123,9 @@ class VertexBuffer private constructor(
private fun calcStride(): Int {
var stride = 0
stride += posBuffer?.byteSize
stride += colorBuffer?.byteSize
stride += texPosBuffer?.byteSize
stride += posVertexElement?.byteSize
stride += colorVertexElement?.byteSize
stride += texVertexElement?.byteSize
return stride
}

View File

@ -8,9 +8,9 @@ import java.nio.ByteBuffer
class VertexBuilder(
private val buffer: ByteBuffer,
private val posBuffer: PosVertexElement?,
private val colorBuffer: ColorVertexElement?,
private val texPosBuffer: TexVertexElement?
private val posVertexElement: PosVertexElement?,
private val colorVertexElement: ColorVertexElement?,
private val texVertexElement: TexVertexElement?
) {
private var builderPos: Vec3f? = null
private var builderColor: Vec4i? = null
@ -33,8 +33,8 @@ class VertexBuilder(
}
fun build() {
builderPos?.let { posBuffer?.pos(buffer, it) }
builderColor?.let { colorBuffer?.color(buffer, it) }
builderUV?.let { texPosBuffer?.uv(buffer, it) }
builderPos?.let { posVertexElement?.pos(buffer, it) }
builderColor?.let { colorVertexElement?.color(buffer, it) }
builderUV?.let { texVertexElement?.uv(buffer, it) }
}
}