Example #1
0
        // 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();
        }