// <auto-generated>
// This file is generated by Ghost.NativeWrapperGen. Do not edit manually.
// </auto-generated>

namespace Ghost.MeshOptimizer;

public unsafe partial struct MeshOptApi
{
    /// <summary>
    /// From: <see cref="Api.meshopt_generateVertexRemap(uint*, uint*, nuint, void*, nuint, nuint)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static nuint GenerateVertexRemap(uint* destination, uint* indices, nuint index_count, void* vertices, nuint vertex_count, nuint vertex_size)
    {
        return Api.meshopt_generateVertexRemap(
            destination,
            indices,
            index_count,
            vertices,
            vertex_count,
            vertex_size);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_generateVertexRemapMulti(uint*, uint*, nuint, nuint, meshopt_Stream*, nuint)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static nuint GenerateVertexRemapMulti(uint* destination, uint* indices, nuint index_count, nuint vertex_count, meshopt_Stream* streams, nuint stream_count)
    {
        return Api.meshopt_generateVertexRemapMulti(
            destination,
            indices,
            index_count,
            vertex_count,
            streams,
            stream_count);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_generateVertexRemapCustom(uint*, uint*, nuint, float*, nuint, nuint, delegate* unmanaged[Cdecl]<void*, uint, uint, int>, void*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static nuint GenerateVertexRemapCustom(uint* destination, uint* indices, nuint index_count, float* vertex_positions, nuint vertex_count, nuint vertex_positions_stride, delegate* unmanaged[Cdecl]<void*, uint, uint, int> callback, void* context)
    {
        return Api.meshopt_generateVertexRemapCustom(
            destination,
            indices,
            index_count,
            vertex_positions,
            vertex_count,
            vertex_positions_stride,
            callback,
            context);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_remapVertexBuffer(void*, void*, nuint, nuint, uint*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static void RemapVertexBuffer(void* destination, void* vertices, nuint vertex_count, nuint vertex_size, uint* remap)
    {
        Api.meshopt_remapVertexBuffer(
            destination,
            vertices,
            vertex_count,
            vertex_size,
            remap);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_remapIndexBuffer(uint*, uint*, nuint, uint*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static void RemapIndexBuffer(uint* destination, uint* indices, nuint index_count, uint* remap)
    {
        Api.meshopt_remapIndexBuffer(
            destination,
            indices,
            index_count,
            remap);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_generateShadowIndexBuffer(uint*, uint*, nuint, void*, nuint, nuint, nuint)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static void GenerateShadowIndexBuffer(uint* destination, uint* indices, nuint index_count, void* vertices, nuint vertex_count, nuint vertex_size, nuint vertex_stride)
    {
        Api.meshopt_generateShadowIndexBuffer(
            destination,
            indices,
            index_count,
            vertices,
            vertex_count,
            vertex_size,
            vertex_stride);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_generateShadowIndexBufferMulti(uint*, uint*, nuint, nuint, meshopt_Stream*, nuint)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static void GenerateShadowIndexBufferMulti(uint* destination, uint* indices, nuint index_count, nuint vertex_count, meshopt_Stream* streams, nuint stream_count)
    {
        Api.meshopt_generateShadowIndexBufferMulti(
            destination,
            indices,
            index_count,
            vertex_count,
            streams,
            stream_count);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_generatePositionRemap(uint*, float*, nuint, nuint)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static void GeneratePositionRemap(uint* destination, float* vertex_positions, nuint vertex_count, nuint vertex_positions_stride)
    {
        Api.meshopt_generatePositionRemap(
            destination,
            vertex_positions,
            vertex_count,
            vertex_positions_stride);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_generateAdjacencyIndexBuffer(uint*, uint*, nuint, float*, nuint, nuint)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static void GenerateAdjacencyIndexBuffer(uint* destination, uint* indices, nuint index_count, float* vertex_positions, nuint vertex_count, nuint vertex_positions_stride)
    {
        Api.meshopt_generateAdjacencyIndexBuffer(
            destination,
            indices,
            index_count,
            vertex_positions,
            vertex_count,
            vertex_positions_stride);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_generateTessellationIndexBuffer(uint*, uint*, nuint, float*, nuint, nuint)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static void GenerateTessellationIndexBuffer(uint* destination, uint* indices, nuint index_count, float* vertex_positions, nuint vertex_count, nuint vertex_positions_stride)
    {
        Api.meshopt_generateTessellationIndexBuffer(
            destination,
            indices,
            index_count,
            vertex_positions,
            vertex_count,
            vertex_positions_stride);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_generateProvokingIndexBuffer(uint*, uint*, uint*, nuint, nuint)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static nuint GenerateProvokingIndexBuffer(uint* destination, uint* reorder, uint* indices, nuint index_count, nuint vertex_count)
    {
        return Api.meshopt_generateProvokingIndexBuffer(
            destination,
            reorder,
            indices,
            index_count,
            vertex_count);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_optimizeVertexCache(uint*, uint*, nuint, nuint)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static void OptimizeVertexCache(uint* destination, uint* indices, nuint index_count, nuint vertex_count)
    {
        Api.meshopt_optimizeVertexCache(
            destination,
            indices,
            index_count,
            vertex_count);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_optimizeVertexCacheStrip(uint*, uint*, nuint, nuint)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static void OptimizeVertexCacheStrip(uint* destination, uint* indices, nuint index_count, nuint vertex_count)
    {
        Api.meshopt_optimizeVertexCacheStrip(
            destination,
            indices,
            index_count,
            vertex_count);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_optimizeVertexCacheFifo(uint*, uint*, nuint, nuint, uint)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static void OptimizeVertexCacheFifo(uint* destination, uint* indices, nuint index_count, nuint vertex_count, uint cache_size)
    {
        Api.meshopt_optimizeVertexCacheFifo(
            destination,
            indices,
            index_count,
            vertex_count,
            cache_size);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_optimizeOverdraw(uint*, uint*, nuint, float*, nuint, nuint, float)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static void OptimizeOverdraw(uint* destination, uint* indices, nuint index_count, float* vertex_positions, nuint vertex_count, nuint vertex_positions_stride, float threshold)
    {
        Api.meshopt_optimizeOverdraw(
            destination,
            indices,
            index_count,
            vertex_positions,
            vertex_count,
            vertex_positions_stride,
            threshold);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_optimizeVertexFetch(void*, uint*, nuint, void*, nuint, nuint)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static nuint OptimizeVertexFetch(void* destination, uint* indices, nuint index_count, void* vertices, nuint vertex_count, nuint vertex_size)
    {
        return Api.meshopt_optimizeVertexFetch(
            destination,
            indices,
            index_count,
            vertices,
            vertex_count,
            vertex_size);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_optimizeVertexFetchRemap(uint*, uint*, nuint, nuint)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static nuint OptimizeVertexFetchRemap(uint* destination, uint* indices, nuint index_count, nuint vertex_count)
    {
        return Api.meshopt_optimizeVertexFetchRemap(
            destination,
            indices,
            index_count,
            vertex_count);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_encodeIndexBuffer(byte*, nuint, uint*, nuint)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static nuint EncodeIndexBuffer(byte* buffer, nuint buffer_size, uint* indices, nuint index_count)
    {
        return Api.meshopt_encodeIndexBuffer(
            buffer,
            buffer_size,
            indices,
            index_count);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_encodeIndexBufferBound(nuint, nuint)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static nuint EncodeIndexBufferBound(nuint index_count, nuint vertex_count)
    {
        return Api.meshopt_encodeIndexBufferBound(
            index_count,
            vertex_count);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_encodeIndexVersion(int)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static void EncodeIndexVersion(int version)
    {
        Api.meshopt_encodeIndexVersion(version);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_decodeIndexBuffer(void*, nuint, nuint, byte*, nuint)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static int DecodeIndexBuffer(void* destination, nuint index_count, nuint index_size, byte* buffer, nuint buffer_size)
    {
        return Api.meshopt_decodeIndexBuffer(
            destination,
            index_count,
            index_size,
            buffer,
            buffer_size);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_decodeIndexVersion(byte*, nuint)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static int DecodeIndexVersion(byte* buffer, nuint buffer_size)
    {
        return Api.meshopt_decodeIndexVersion(
            buffer,
            buffer_size);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_encodeIndexSequence(byte*, nuint, uint*, nuint)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static nuint EncodeIndexSequence(byte* buffer, nuint buffer_size, uint* indices, nuint index_count)
    {
        return Api.meshopt_encodeIndexSequence(
            buffer,
            buffer_size,
            indices,
            index_count);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_encodeIndexSequenceBound(nuint, nuint)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static nuint EncodeIndexSequenceBound(nuint index_count, nuint vertex_count)
    {
        return Api.meshopt_encodeIndexSequenceBound(
            index_count,
            vertex_count);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_decodeIndexSequence(void*, nuint, nuint, byte*, nuint)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static int DecodeIndexSequence(void* destination, nuint index_count, nuint index_size, byte* buffer, nuint buffer_size)
    {
        return Api.meshopt_decodeIndexSequence(
            destination,
            index_count,
            index_size,
            buffer,
            buffer_size);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_encodeMeshlet(byte*, nuint, uint*, nuint, byte*, nuint)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static nuint EncodeMeshlet(byte* buffer, nuint buffer_size, uint* vertices, nuint vertex_count, byte* triangles, nuint triangle_count)
    {
        return Api.meshopt_encodeMeshlet(
            buffer,
            buffer_size,
            vertices,
            vertex_count,
            triangles,
            triangle_count);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_encodeMeshletBound(nuint, nuint)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static nuint EncodeMeshletBound(nuint max_vertices, nuint max_triangles)
    {
        return Api.meshopt_encodeMeshletBound(
            max_vertices,
            max_triangles);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_decodeMeshlet(void*, nuint, nuint, void*, nuint, nuint, byte*, nuint)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static int DecodeMeshlet(void* vertices, nuint vertex_count, nuint vertex_size, void* triangles, nuint triangle_count, nuint triangle_size, byte* buffer, nuint buffer_size)
    {
        return Api.meshopt_decodeMeshlet(
            vertices,
            vertex_count,
            vertex_size,
            triangles,
            triangle_count,
            triangle_size,
            buffer,
            buffer_size);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_decodeMeshletRaw(uint*, nuint, uint*, nuint, byte*, nuint)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static int DecodeMeshletRaw(uint* vertices, nuint vertex_count, uint* triangles, nuint triangle_count, byte* buffer, nuint buffer_size)
    {
        return Api.meshopt_decodeMeshletRaw(
            vertices,
            vertex_count,
            triangles,
            triangle_count,
            buffer,
            buffer_size);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_encodeVertexBuffer(byte*, nuint, void*, nuint, nuint)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static nuint EncodeVertexBuffer(byte* buffer, nuint buffer_size, void* vertices, nuint vertex_count, nuint vertex_size)
    {
        return Api.meshopt_encodeVertexBuffer(
            buffer,
            buffer_size,
            vertices,
            vertex_count,
            vertex_size);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_encodeVertexBufferBound(nuint, nuint)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static nuint EncodeVertexBufferBound(nuint vertex_count, nuint vertex_size)
    {
        return Api.meshopt_encodeVertexBufferBound(
            vertex_count,
            vertex_size);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_encodeVertexBufferLevel(byte*, nuint, void*, nuint, nuint, int, int)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static nuint EncodeVertexBufferLevel(byte* buffer, nuint buffer_size, void* vertices, nuint vertex_count, nuint vertex_size, int level, int version)
    {
        return Api.meshopt_encodeVertexBufferLevel(
            buffer,
            buffer_size,
            vertices,
            vertex_count,
            vertex_size,
            level,
            version);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_encodeVertexVersion(int)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static void EncodeVertexVersion(int version)
    {
        Api.meshopt_encodeVertexVersion(version);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_decodeVertexBuffer(void*, nuint, nuint, byte*, nuint)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static int DecodeVertexBuffer(void* destination, nuint vertex_count, nuint vertex_size, byte* buffer, nuint buffer_size)
    {
        return Api.meshopt_decodeVertexBuffer(
            destination,
            vertex_count,
            vertex_size,
            buffer,
            buffer_size);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_decodeVertexVersion(byte*, nuint)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static int DecodeVertexVersion(byte* buffer, nuint buffer_size)
    {
        return Api.meshopt_decodeVertexVersion(
            buffer,
            buffer_size);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_decodeFilterOct(void*, nuint, nuint)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static void DecodeFilterOct(void* buffer, nuint count, nuint stride)
    {
        Api.meshopt_decodeFilterOct(
            buffer,
            count,
            stride);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_decodeFilterQuat(void*, nuint, nuint)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static void DecodeFilterQuat(void* buffer, nuint count, nuint stride)
    {
        Api.meshopt_decodeFilterQuat(
            buffer,
            count,
            stride);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_decodeFilterExp(void*, nuint, nuint)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static void DecodeFilterExp(void* buffer, nuint count, nuint stride)
    {
        Api.meshopt_decodeFilterExp(
            buffer,
            count,
            stride);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_decodeFilterColor(void*, nuint, nuint)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static void DecodeFilterColor(void* buffer, nuint count, nuint stride)
    {
        Api.meshopt_decodeFilterColor(
            buffer,
            count,
            stride);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_encodeFilterOct(void*, nuint, nuint, int, float*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static void EncodeFilterOct(void* destination, nuint count, nuint stride, int bits, float* data)
    {
        Api.meshopt_encodeFilterOct(
            destination,
            count,
            stride,
            bits,
            data);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_encodeFilterQuat(void*, nuint, nuint, int, float*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static void EncodeFilterQuat(void* destination, nuint count, nuint stride, int bits, float* data)
    {
        Api.meshopt_encodeFilterQuat(
            destination,
            count,
            stride,
            bits,
            data);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_encodeFilterExp(void*, nuint, nuint, int, float*, meshopt_EncodeExpMode)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static void EncodeFilterExp(void* destination, nuint count, nuint stride, int bits, float* data, meshopt_EncodeExpMode mode)
    {
        Api.meshopt_encodeFilterExp(
            destination,
            count,
            stride,
            bits,
            data,
            mode);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_encodeFilterColor(void*, nuint, nuint, int, float*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static void EncodeFilterColor(void* destination, nuint count, nuint stride, int bits, float* data)
    {
        Api.meshopt_encodeFilterColor(
            destination,
            count,
            stride,
            bits,
            data);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_simplify(uint*, uint*, nuint, float*, nuint, nuint, nuint, float, uint, float*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static nuint Simplify(uint* destination, uint* indices, nuint index_count, float* vertex_positions, nuint vertex_count, nuint vertex_positions_stride, nuint target_index_count, float target_error, uint options, float* result_error)
    {
        return Api.meshopt_simplify(
            destination,
            indices,
            index_count,
            vertex_positions,
            vertex_count,
            vertex_positions_stride,
            target_index_count,
            target_error,
            options,
            result_error);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_simplifyWithAttributes(uint*, uint*, nuint, float*, nuint, nuint, float*, nuint, float*, nuint, byte*, nuint, float, uint, float*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static nuint SimplifyWithAttributes(uint* destination, uint* indices, nuint index_count, float* vertex_positions, nuint vertex_count, nuint vertex_positions_stride, float* vertex_attributes, nuint vertex_attributes_stride, float* attribute_weights, nuint attribute_count, byte* vertex_lock, nuint target_index_count, float target_error, uint options, float* result_error)
    {
        return Api.meshopt_simplifyWithAttributes(
            destination,
            indices,
            index_count,
            vertex_positions,
            vertex_count,
            vertex_positions_stride,
            vertex_attributes,
            vertex_attributes_stride,
            attribute_weights,
            attribute_count,
            vertex_lock,
            target_index_count,
            target_error,
            options,
            result_error);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_simplifyWithUpdate(uint*, nuint, float*, nuint, nuint, float*, nuint, float*, nuint, byte*, nuint, float, uint, float*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static nuint SimplifyWithUpdate(uint* indices, nuint index_count, float* vertex_positions, nuint vertex_count, nuint vertex_positions_stride, float* vertex_attributes, nuint vertex_attributes_stride, float* attribute_weights, nuint attribute_count, byte* vertex_lock, nuint target_index_count, float target_error, uint options, float* result_error)
    {
        return Api.meshopt_simplifyWithUpdate(
            indices,
            index_count,
            vertex_positions,
            vertex_count,
            vertex_positions_stride,
            vertex_attributes,
            vertex_attributes_stride,
            attribute_weights,
            attribute_count,
            vertex_lock,
            target_index_count,
            target_error,
            options,
            result_error);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_simplifySloppy(uint*, uint*, nuint, float*, nuint, nuint, byte*, nuint, float, float*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static nuint SimplifySloppy(uint* destination, uint* indices, nuint index_count, float* vertex_positions, nuint vertex_count, nuint vertex_positions_stride, byte* vertex_lock, nuint target_index_count, float target_error, float* result_error)
    {
        return Api.meshopt_simplifySloppy(
            destination,
            indices,
            index_count,
            vertex_positions,
            vertex_count,
            vertex_positions_stride,
            vertex_lock,
            target_index_count,
            target_error,
            result_error);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_simplifyPrune(uint*, uint*, nuint, float*, nuint, nuint, float)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static nuint SimplifyPrune(uint* destination, uint* indices, nuint index_count, float* vertex_positions, nuint vertex_count, nuint vertex_positions_stride, float target_error)
    {
        return Api.meshopt_simplifyPrune(
            destination,
            indices,
            index_count,
            vertex_positions,
            vertex_count,
            vertex_positions_stride,
            target_error);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_simplifyPoints(uint*, float*, nuint, nuint, float*, nuint, float, nuint)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static nuint SimplifyPoints(uint* destination, float* vertex_positions, nuint vertex_count, nuint vertex_positions_stride, float* vertex_colors, nuint vertex_colors_stride, float color_weight, nuint target_vertex_count)
    {
        return Api.meshopt_simplifyPoints(
            destination,
            vertex_positions,
            vertex_count,
            vertex_positions_stride,
            vertex_colors,
            vertex_colors_stride,
            color_weight,
            target_vertex_count);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_simplifyScale(float*, nuint, nuint)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static float SimplifyScale(float* vertex_positions, nuint vertex_count, nuint vertex_positions_stride)
    {
        return Api.meshopt_simplifyScale(
            vertex_positions,
            vertex_count,
            vertex_positions_stride);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_stripify(uint*, uint*, nuint, nuint, uint)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static nuint Stripify(uint* destination, uint* indices, nuint index_count, nuint vertex_count, uint restart_index)
    {
        return Api.meshopt_stripify(
            destination,
            indices,
            index_count,
            vertex_count,
            restart_index);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_stripifyBound(nuint)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static nuint StripifyBound(nuint index_count)
    {
        return Api.meshopt_stripifyBound(index_count);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_unstripify(uint*, uint*, nuint, uint)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static nuint Unstripify(uint* destination, uint* indices, nuint index_count, uint restart_index)
    {
        return Api.meshopt_unstripify(
            destination,
            indices,
            index_count,
            restart_index);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_unstripifyBound(nuint)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static nuint UnstripifyBound(nuint index_count)
    {
        return Api.meshopt_unstripifyBound(index_count);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_analyzeVertexCache(uint*, nuint, nuint, uint, uint, uint)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static meshopt_VertexCacheStatistics AnalyzeVertexCache(uint* indices, nuint index_count, nuint vertex_count, uint cache_size, uint warp_size, uint primgroup_size)
    {
        return Api.meshopt_analyzeVertexCache(
            indices,
            index_count,
            vertex_count,
            cache_size,
            warp_size,
            primgroup_size);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_analyzeVertexFetch(uint*, nuint, nuint, nuint)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static meshopt_VertexFetchStatistics AnalyzeVertexFetch(uint* indices, nuint index_count, nuint vertex_count, nuint vertex_size)
    {
        return Api.meshopt_analyzeVertexFetch(
            indices,
            index_count,
            vertex_count,
            vertex_size);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_analyzeOverdraw(uint*, nuint, float*, nuint, nuint)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static meshopt_OverdrawStatistics AnalyzeOverdraw(uint* indices, nuint index_count, float* vertex_positions, nuint vertex_count, nuint vertex_positions_stride)
    {
        return Api.meshopt_analyzeOverdraw(
            indices,
            index_count,
            vertex_positions,
            vertex_count,
            vertex_positions_stride);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_analyzeCoverage(uint*, nuint, float*, nuint, nuint)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static meshopt_CoverageStatistics AnalyzeCoverage(uint* indices, nuint index_count, float* vertex_positions, nuint vertex_count, nuint vertex_positions_stride)
    {
        return Api.meshopt_analyzeCoverage(
            indices,
            index_count,
            vertex_positions,
            vertex_count,
            vertex_positions_stride);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_buildMeshletsBound(nuint, nuint, nuint)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static nuint BuildMeshletsBound(nuint index_count, nuint max_vertices, nuint max_triangles)
    {
        return Api.meshopt_buildMeshletsBound(
            index_count,
            max_vertices,
            max_triangles);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_optimizeMeshlet(uint*, byte*, nuint, nuint)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static void OptimizeMeshlet(uint* meshlet_vertices, byte* meshlet_triangles, nuint triangle_count, nuint vertex_count)
    {
        Api.meshopt_optimizeMeshlet(
            meshlet_vertices,
            meshlet_triangles,
            triangle_count,
            vertex_count);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_computeClusterBounds(uint*, nuint, float*, nuint, nuint)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static meshopt_Bounds ComputeClusterBounds(uint* indices, nuint index_count, float* vertex_positions, nuint vertex_count, nuint vertex_positions_stride)
    {
        return Api.meshopt_computeClusterBounds(
            indices,
            index_count,
            vertex_positions,
            vertex_count,
            vertex_positions_stride);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_computeMeshletBounds(uint*, byte*, nuint, float*, nuint, nuint)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static meshopt_Bounds ComputeMeshletBounds(uint* meshlet_vertices, byte* meshlet_triangles, nuint triangle_count, float* vertex_positions, nuint vertex_count, nuint vertex_positions_stride)
    {
        return Api.meshopt_computeMeshletBounds(
            meshlet_vertices,
            meshlet_triangles,
            triangle_count,
            vertex_positions,
            vertex_count,
            vertex_positions_stride);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_computeSphereBounds(float*, nuint, nuint, float*, nuint)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static meshopt_Bounds ComputeSphereBounds(float* positions, nuint count, nuint positions_stride, float* radii, nuint radii_stride)
    {
        return Api.meshopt_computeSphereBounds(
            positions,
            count,
            positions_stride,
            radii,
            radii_stride);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_extractMeshletIndices(uint*, byte*, uint*, nuint)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static nuint ExtractMeshletIndices(uint* vertices, byte* triangles, uint* indices, nuint index_count)
    {
        return Api.meshopt_extractMeshletIndices(
            vertices,
            triangles,
            indices,
            index_count);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_partitionClusters(uint*, uint*, nuint, uint*, nuint, float*, nuint, nuint, nuint)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static nuint PartitionClusters(uint* destination, uint* cluster_indices, nuint total_index_count, uint* cluster_index_counts, nuint cluster_count, float* vertex_positions, nuint vertex_count, nuint vertex_positions_stride, nuint target_partition_size)
    {
        return Api.meshopt_partitionClusters(
            destination,
            cluster_indices,
            total_index_count,
            cluster_index_counts,
            cluster_count,
            vertex_positions,
            vertex_count,
            vertex_positions_stride,
            target_partition_size);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_spatialSortRemap(uint*, float*, nuint, nuint)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static void SpatialSortRemap(uint* destination, float* vertex_positions, nuint vertex_count, nuint vertex_positions_stride)
    {
        Api.meshopt_spatialSortRemap(
            destination,
            vertex_positions,
            vertex_count,
            vertex_positions_stride);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_spatialSortTriangles(uint*, uint*, nuint, float*, nuint, nuint)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static void SpatialSortTriangles(uint* destination, uint* indices, nuint index_count, float* vertex_positions, nuint vertex_count, nuint vertex_positions_stride)
    {
        Api.meshopt_spatialSortTriangles(
            destination,
            indices,
            index_count,
            vertex_positions,
            vertex_count,
            vertex_positions_stride);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_spatialClusterPoints(uint*, float*, nuint, nuint, nuint)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static void SpatialClusterPoints(uint* destination, float* vertex_positions, nuint vertex_count, nuint vertex_positions_stride, nuint cluster_size)
    {
        Api.meshopt_spatialClusterPoints(
            destination,
            vertex_positions,
            vertex_count,
            vertex_positions_stride,
            cluster_size);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_opacityMapMeasure(byte*, uint*, int*, uint*, nuint, float*, nuint, nuint, uint, uint, int, float)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static nuint OpacityMapMeasure(byte* levels, uint* sources, int* omm_indices, uint* indices, nuint index_count, float* vertex_uvs, nuint vertex_count, nuint vertex_uvs_stride, uint texture_width, uint texture_height, int max_level, float target_edge)
    {
        return Api.meshopt_opacityMapMeasure(
            levels,
            sources,
            omm_indices,
            indices,
            index_count,
            vertex_uvs,
            vertex_count,
            vertex_uvs_stride,
            texture_width,
            texture_height,
            max_level,
            target_edge);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_opacityMapRasterize(byte*, int, int, float*, float*, float*, byte*, nuint, nuint, uint, uint)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static void OpacityMapRasterize(byte* result, int level, int states, float* uv0, float* uv1, float* uv2, byte* texture_data, nuint texture_stride, nuint texture_pitch, uint texture_width, uint texture_height)
    {
        Api.meshopt_opacityMapRasterize(
            result,
            level,
            states,
            uv0,
            uv1,
            uv2,
            texture_data,
            texture_stride,
            texture_pitch,
            texture_width,
            texture_height);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_opacityMapEntrySize(int, int)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static nuint OpacityMapEntrySize(int level, int states)
    {
        return Api.meshopt_opacityMapEntrySize(
            level,
            states);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_opacityMapCompact(byte*, nuint, byte*, uint*, nuint, int*, nuint, int)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static nuint OpacityMapCompact(byte* data, nuint data_size, byte* levels, uint* offsets, nuint omm_count, int* omm_indices, nuint triangle_count, int states)
    {
        return Api.meshopt_opacityMapCompact(
            data,
            data_size,
            levels,
            offsets,
            omm_count,
            omm_indices,
            triangle_count,
            states);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_quantizeHalf(float)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static ushort QuantizeHalf(float v)
    {
        return Api.meshopt_quantizeHalf(v);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_quantizeFloat(float, int)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static float QuantizeFloat(float v, int N)
    {
        return Api.meshopt_quantizeFloat(
            v,
            N);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_dequantizeHalf(ushort)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static float DequantizeHalf(ushort h)
    {
        return Api.meshopt_dequantizeHalf(h);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_setAllocator(delegate* unmanaged[Cdecl]<nuint, void*>, delegate* unmanaged[Cdecl]<void*, void>)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static void SetAllocator(delegate* unmanaged[Cdecl]<nuint, void*> allocate, delegate* unmanaged[Cdecl]<void*, void> deallocate)
    {
        Api.meshopt_setAllocator(
            allocate,
            deallocate);
    }
}
