54 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
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;
 | 
						|
	}
 | 
						|
}
 |