// public static ValueTask<string> drawOnTarget(string targetId, string textureId, float x, float y) { // return LegendOfWorlds.Engine.World.jsRuntime.InvokeAsync<string>("drawOnTarget", new object[] { targetId, textureId, x, y }); // } // public static ValueTask<string> drawSingleTarget(string targetId, float x, float y) { // return LegendOfWorlds.Engine.World.jsRuntime.InvokeAsync<string>("drawSingleTarget", new object[] { targetId, x, y }); // } public static async Task DrawSingleTarget(Guid targetId, int x, int y) { RenderTarget rT = renderTargets[targetId]; await GL.BindTextureAsync(TextureType.TEXTURE_2D, textures[rT.textureId].texture); float[] matrix = new float[16]; unchecked { matrix = await M4.Computations.Translate(ortho, (float)x, (float)y, 0); matrix = await M4.Computations.Scale(matrix, (float)rT.width, (float)rT.height, 0); } await GL.UniformMatrixAsync(matrixLocation, false, matrix); //The texture's matrix await GL.UniformMatrixAsync(textureMatrixLocation, false, rT.texFinalMatrices[0][0]); await GL.UniformAsync(textureLocation, 0); await GL.BeginBatchAsync(); await GL.DrawArraysAsync(Primitive.TRIANGLES, 0, 6); await GL.EndBatchAsync(); }