forked from LeenkxTeam/LNXSDK
		
	
		
			
	
	
		
			51 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
		
		
			
		
	
	
			51 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
| 
								 | 
							
								package kha.graphics4;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import js.html.webgl.GL;
							 | 
						||
| 
								 | 
							
								import kha.arrays.Uint32Array;
							 | 
						||
| 
								 | 
							
								import kha.graphics4.Usage;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class IndexBuffer {
							 | 
						||
| 
								 | 
							
									public var _data: Uint32Array;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									var buffer: Dynamic;
							 | 
						||
| 
								 | 
							
									var mySize: Int;
							 | 
						||
| 
								 | 
							
									var usage: Usage;
							 | 
						||
| 
								 | 
							
									var lockStart: Int = 0;
							 | 
						||
| 
								 | 
							
									var lockEnd: Int = 0;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public function new(indexCount: Int, usage: Usage, canRead: Bool = false) {
							 | 
						||
| 
								 | 
							
										this.usage = usage;
							 | 
						||
| 
								 | 
							
										mySize = indexCount;
							 | 
						||
| 
								 | 
							
										buffer = SystemImpl.gl.createBuffer();
							 | 
						||
| 
								 | 
							
										_data = new Uint32Array(indexCount);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public function delete(): Void {
							 | 
						||
| 
								 | 
							
										_data = null;
							 | 
						||
| 
								 | 
							
										SystemImpl.gl.deleteBuffer(buffer);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public function lock(?start: Int, ?count: Int): Uint32Array {
							 | 
						||
| 
								 | 
							
										lockStart = start != null ? start : 0;
							 | 
						||
| 
								 | 
							
										lockEnd = count != null ? start + count : mySize;
							 | 
						||
| 
								 | 
							
										return _data.subarray(lockStart, lockEnd);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public function unlock(?count: Int): Void {
							 | 
						||
| 
								 | 
							
										if (count != null)
							 | 
						||
| 
								 | 
							
											lockEnd = lockStart + count;
							 | 
						||
| 
								 | 
							
										SystemImpl.gl.bindBuffer(GL.ELEMENT_ARRAY_BUFFER, buffer);
							 | 
						||
| 
								 | 
							
										var data = _data.subarray(lockStart, lockEnd);
							 | 
						||
| 
								 | 
							
										var glData: Dynamic = SystemImpl.elementIndexUint == null ? new js.lib.Uint16Array(data.buffer) : data;
							 | 
						||
| 
								 | 
							
										SystemImpl.gl.bufferData(GL.ELEMENT_ARRAY_BUFFER, glData, usage == Usage.DynamicUsage ? GL.DYNAMIC_DRAW : GL.STATIC_DRAW);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public function set(): Void {
							 | 
						||
| 
								 | 
							
										SystemImpl.gl.bindBuffer(GL.ELEMENT_ARRAY_BUFFER, buffer);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public function count(): Int {
							 | 
						||
| 
								 | 
							
										return mySize;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 |