54 lines
1.4 KiB
Haxe
Raw Permalink Normal View History

2025-01-22 16:18:30 +01:00
package kha.graphics4;
import kha.arrays.Uint32Array;
@:headerCode("
#include <kinc/graphics4/indexbuffer.h>
")
@:headerClassCode("kinc_g4_index_buffer_t buffer;")
class IndexBuffer {
var data: Uint32Array;
var myCount: Int;
public function new(indexCount: Int, usage: Usage, canRead: Bool = false) {
myCount = indexCount;
data = new Uint32Array(0);
untyped __cpp__("kinc_g4_index_buffer_init(&buffer, indexCount, KINC_G4_INDEX_BUFFER_FORMAT_32BIT, (kinc_g4_usage_t)usage);");
}
public function delete(): Void {
untyped __cpp__("kinc_g4_index_buffer_destroy(&buffer);");
}
@:functionCode("
data->self.data = (uint8_t*)kinc_g4_index_buffer_lock(&buffer, start, count);
data->byteArrayLength = count * 4;
data->byteArrayOffset = 0;
return data;
")
function lockPrivate(start: Int, count: Int): Uint32Array {
return data;
}
public function lock(?start: Int, ?count: Int): Uint32Array {
if (start == null)
start = 0;
if (count == null)
count = this.count();
return lockPrivate(start, count);
}
@:functionCode("kinc_g4_index_buffer_unlock(&buffer, count); data->self.data = nullptr;")
public function unlockPrivate(count: Int): Void {}
public function unlock(?count: Int): Void {
if (count == null)
count = this.count();
unlockPrivate(count);
}
public function count(): Int {
return myCount;
}
}