@@ -4,9 +4,12 @@ import glm_.BYTES
44import glm_.i
55import glm_.set
66import glm_.vec2.Vec2
7+ import glm_.vec2.Vec2i
78import glm_.vec3.Vec3
9+ import glm_.vec3.Vec3i
810import glm_.vec4.Vec4
911import glm_.vec4.Vec4b
12+ import glm_.vec4.Vec4i
1013import gln.glf.Vertex
1114import gln.glf.glf
1215import org.lwjgl.system.MemoryUtil
@@ -95,15 +98,18 @@ fun bufferOf(vertices: Collection<*>): ByteBuffer {
9598 when (vertices.elementAt(0 )) {
9699 is Vec2 -> {
97100 res = bufferBig(Vec2 .size * vertices.size)
98- for (i in 0 until vertices.size) (vertices.elementAt(i) as Vec2 ).to(res, i * Vec2 .size)
101+ for (i in 0 until vertices.size)
102+ (vertices.elementAt(i) as Vec2 ).to(res, i * Vec2 .size)
99103 }
100104 is Vec3 -> {
101105 res = bufferBig(Vec3 .size * vertices.size)
102- for (i in 0 until vertices.size) (vertices.elementAt(i) as Vec3 ).to(res, i * Vec3 .size)
106+ for (i in 0 until vertices.size)
107+ (vertices.elementAt(i) as Vec3 ).to(res, i * Vec3 .size)
103108 }
104109 is Vec4 -> {
105110 res = bufferBig(Vec4 .size * vertices.size)
106- for (i in 0 until vertices.size) (vertices.elementAt(i) as Vec4 ).to(res, i * Vec4 .size)
111+ for (i in 0 until vertices.size)
112+ (vertices.elementAt(i) as Vec4 ).to(res, i * Vec4 .size)
107113 }
108114 is Vertex .pos2_tc2 -> {
109115 res = bufferBig(glf.pos2_tc2.stride * vertices.size)
@@ -129,21 +135,35 @@ fun bufferOf(vertices: Collection<*>): ByteBuffer {
129135fun bufferOf (vararg vertices : Any ): ByteBuffer {
130136 val res: ByteBuffer
131137 when (vertices.elementAt(0 )) {
138+ is Float -> {
139+ res = bufferBig(Float .BYTES * vertices.size)
140+ for (i in 0 until vertices.size)
141+ res.putFloat(i * Float .BYTES , (vertices[i] as Float ))
142+ }
143+ is Int -> {
144+ res = bufferBig(Int .BYTES * vertices.size)
145+ for (i in 0 until vertices.size)
146+ res.putInt(i * Int .BYTES , (vertices[i] as Int ))
147+ }
132148 is Vec2 -> {
133149 res = bufferBig(Vec2 .size * vertices.size)
134- for (i in 0 until vertices.size) (vertices[i] as Vec2 ).to(res, i * Vec2 .size)
150+ for (i in 0 until vertices.size)
151+ (vertices[i] as Vec2 ).to(res, i * Vec2 .size)
135152 }
136153 is Vec3 -> {
137154 res = bufferBig(Vec3 .size * vertices.size)
138- for (i in 0 until vertices.size) (vertices[i] as Vec3 ).to(res, i * Vec3 .size)
155+ for (i in 0 until vertices.size)
156+ (vertices[i] as Vec3 ).to(res, i * Vec3 .size)
139157 }
140158 is Vec4 -> {
141159 res = bufferBig(Vec4 .size * vertices.size)
142- for (i in 0 until vertices.size) (vertices[i] as Vec4 ).to(res, i * Vec4 .size)
160+ for (i in 0 until vertices.size)
161+ (vertices[i] as Vec4 ).to(res, i * Vec4 .size)
143162 }
144163 is Vec4b -> {
145164 res = bufferBig(Vec4b .size * vertices.size)
146- for (i in 0 until vertices.size) (vertices[i] as Vec4b ).to(res, i * Vec4b .size)
165+ for (i in 0 until vertices.size)
166+ (vertices[i] as Vec4b ).to(res, i * Vec4b .size)
147167 }
148168 is Vertex .pos2_tc2 -> {
149169 res = bufferBig(glf.pos2_tc2.stride * vertices.size)
@@ -178,17 +198,53 @@ fun bufferOf(vararg vertices: Any): ByteBuffer {
178198fun floatBufferOf (vertices : Collection <* >): FloatBuffer {
179199 val res: FloatBuffer
180200 when (vertices.elementAt(0 )) {
201+ is Float -> {
202+ res = floatBufferBig(vertices.size)
203+ for (i in 0 until vertices.size)
204+ res.put(i * Float .BYTES , (vertices.elementAt(i) as Float ))
205+ }
181206 is Vec2 -> {
182207 res = floatBufferBig(Vec2 .length * vertices.size)
183- for (i in 0 until vertices.size) (vertices.elementAt(i) as Vec2 ).to(res, i * Vec2 .length)
208+ for (i in 0 until vertices.size)
209+ (vertices.elementAt(i) as Vec2 ).to(res, i * Vec2 .length)
184210 }
185211 is Vec3 -> {
186212 res = floatBufferBig(Vec3 .length * vertices.size)
187- for (i in 0 until vertices.size) (vertices.elementAt(i) as Vec3 ).to(res, i * Vec3 .length)
213+ for (i in 0 until vertices.size)
214+ (vertices.elementAt(i) as Vec3 ).to(res, i * Vec3 .length)
188215 }
189216 is Vec4 -> {
190217 res = floatBufferBig(Vec4 .length * vertices.size)
191- for (i in 0 until vertices.size) (vertices.elementAt(i) as Vec4 ).to(res, i * Vec4 .length)
218+ for (i in 0 until vertices.size)
219+ (vertices.elementAt(i) as Vec4 ).to(res, i * Vec4 .length)
220+ }
221+ else -> throw Error ()
222+ }
223+ return res
224+ }
225+
226+ fun intBufferOf (vertices : Collection <* >): IntBuffer {
227+ val res: IntBuffer
228+ when (vertices.elementAt(0 )) {
229+ is Int -> {
230+ res = intBufferBig(vertices.size)
231+ for (i in 0 until vertices.size)
232+ res.put(i * Int .BYTES , (vertices.elementAt(i) as Int ))
233+ }
234+ is Vec2i -> {
235+ res = intBufferBig(Vec2i .length * vertices.size)
236+ for (i in 0 until vertices.size)
237+ (vertices.elementAt(i) as Vec2i ).to(res, i * Vec2i .length)
238+ }
239+ is Vec3i -> {
240+ res = intBufferBig(Vec3i .length * vertices.size)
241+ for (i in 0 until vertices.size)
242+ (vertices.elementAt(i) as Vec3i ).to(res, i * Vec3i .length)
243+ }
244+ is Vec4i -> {
245+ res = intBufferBig(Vec4i .length * vertices.size)
246+ for (i in 0 until vertices.size)
247+ (vertices.elementAt(i) as Vec4i ).to(res, i * Vec4i .length)
192248 }
193249 else -> throw Error ()
194250 }
0 commit comments