BabylonJS / BabylonNative

Build cross-platform native applications with the power of the Babylon.js JavaScript framework
MIT License
773 stars 133 forks source link

Handle Engine States in Babylon Native #1106

Open sebavan opened 2 years ago

sebavan commented 2 years ago

Currently, NativeEngine.js does not support changing and relying on states through the available state properties:

   /**
     * Gets the depth culling state manager
     */
    public get depthCullingState(): DepthCullingState {
        return this._depthCullingState;
    }

    /**
     * Gets the alpha state manager
     */
    public get alphaState(): AlphaState {
        return this._alphaState;
    }

    /**
     * Gets the stencil state manager
     */
    public get stencilState(): StencilState {
        return this._stencilState;
    }

    /**
     * Gets the stencil state composer
     */
    public get stencilStateComposer(): StencilStateComposer {
        return this._stencilStateComposer;
    }

Those are only working in WebGL and WebGPU. In Native state changes needs to flow through the old APIs dedicated functions like: setState, setDepthBuffer and similar...

It is the source of both potential bugs (even in our current version) and forces ThinEngine to be bigger than required.

bghgary commented 2 years ago

Related: #778