package kha.graphics4; import kha.arrays.Float32Array; import kha.arrays.Int32Array; import kha.Color; import kha.FastFloat; import kha.Image; import kha.math.FastMatrix3; import kha.math.FastMatrix4; import kha.math.FastVector2; import kha.math.FastVector3; import kha.math.FastVector4; import kha.Video; interface Graphics { function begin(additionalRenderTargets: Array = null): Void; function beginFace(face: Int): Void; function beginEye(eye: Int): Void; function end(): Void; function vsynced(): Bool; function refreshRate(): Int; function clear(?color: Color, ?depth: Float, ?stencil: Int): Void; function viewport(x: Int, y: Int, width: Int, height: Int): Void; function scissor(x: Int, y: Int, width: Int, height: Int): Void; function disableScissor(): Void; function setVertexBuffer(vertexBuffer: VertexBuffer): Void; function setVertexBuffers(vertexBuffers: Array): Void; function setIndexBuffer(indexBuffer: IndexBuffer): Void; function setTexture(unit: TextureUnit, texture: Image): Void; function setTextureDepth(unit: TextureUnit, texture: Image): Void; function setTextureArray(unit: TextureUnit, texture: Image): Void; function setVideoTexture(unit: TextureUnit, texture: Video): Void; function setImageTexture(unit: TextureUnit, texture: Image): Void; function setTextureParameters(texunit: TextureUnit, uAddressing: TextureAddressing, vAddressing: TextureAddressing, minificationFilter: TextureFilter, magnificationFilter: TextureFilter, mipmapFilter: MipMapFilter): Void; function setTexture3DParameters(texunit: TextureUnit, uAddressing: TextureAddressing, vAddressing: TextureAddressing, wAddressing: TextureAddressing, minificationFilter: TextureFilter, magnificationFilter: TextureFilter, mipmapFilter: MipMapFilter): Void; function setTextureCompareMode(texunit: TextureUnit, enabled: Bool): Void; function setCubeMapCompareMode(texunit: TextureUnit, enabled: Bool): Void; function setCubeMap(unit: TextureUnit, cubeMap: CubeMap): Void; function setCubeMapDepth(unit: TextureUnit, cubeMap: CubeMap): Void; function maxBoundTextures(): Int; // function maxTextureSize(): Int; // function supportsNonPow2Textures(): Bool; function setStencilReferenceValue(value: Int): Void; function instancedRenderingAvailable(): Bool; function setPipeline(pipeline: PipelineState): Void; function setBool(location: ConstantLocation, value: Bool): Void; function setInt(location: ConstantLocation, value: Int): Void; function setInt2(location: ConstantLocation, value1: Int, value2: Int): Void; function setInt3(location: ConstantLocation, value1: Int, value2: Int, value3: Int): Void; function setInt4(location: ConstantLocation, value1: Int, value2: Int, value3: Int, value4: Int): Void; function setInts(location: ConstantLocation, ints: Int32Array): Void; function setFloat(location: ConstantLocation, value: FastFloat): Void; function setFloat2(location: ConstantLocation, value1: FastFloat, value2: FastFloat): Void; function setFloat3(location: ConstantLocation, value1: FastFloat, value2: FastFloat, value3: FastFloat): Void; function setFloat4(location: ConstantLocation, value1: FastFloat, value2: FastFloat, value3: FastFloat, value4: FastFloat): Void; function setFloats(location: ConstantLocation, floats: Float32Array): Void; function setVector2(location: ConstantLocation, value: FastVector2): Void; function setVector3(location: ConstantLocation, value: FastVector3): Void; function setVector4(location: ConstantLocation, value: FastVector4): Void; function setMatrix(location: ConstantLocation, value: FastMatrix4): Void; function setMatrix3(location: ConstantLocation, value: FastMatrix3): Void; function drawIndexedVertices(start: Int = 0, count: Int = -1): Void; function drawIndexedVerticesInstanced(instanceCount: Int, start: Int = 0, count: Int = -1): Void; function flush(): Void; }