Javascript /传递正确的可选参数

42fyovps  于 2022-12-10  发布在  Java
关注(0)|答案(2)|浏览(165)

如果有这样的对象:WebGLCubeRenderTarget
其构造函数为:

constructor(size?: number, options?: WebGLRenderTargetOptions);

在选项中,我需要指定编码:

export interface WebGLRenderTargetOptions {
    wrapS?: Wrapping | undefined;
    wrapT?: Wrapping | undefined;
    encoding?: TextureEncoding | undefined;

编码为枚举:

export enum TextureEncoding {}
export const LinearEncoding: TextureEncoding;
export const sRGBEncoding: TextureEncoding;

传递sRGBEncoding的正确语法应该是什么?
这一条行不通:

const formatted = new THREE.WebGLCubeRenderTarget(texture.image.height, "sRGBEncoding")

编辑:完整代码

const Background = props => {
    const texture = useLoader(THREE.TextureLoader, "/03milkyway.jpg")
    const { gl } = useThree();
    const formatted = new THREE.WebGLCubeRenderTarget(texture.image.height, "sRGBEncoding").fromEquirectangularTexture(gl, texture)
    return (
        <primitive attach='background' object={formatted} />
    )
}
bjg7j2ky

bjg7j2ky1#

您必须传递一个对象作为第二个参数:

const formatted = new THREE.WebGLCubeRenderTarget(texture.image.height, {encoding: "sRGBEncoding"})
fivyi3re

fivyi3re2#

WebGLCubeRenderTarget的第二个参数应该是一个对象,您传递给它的是一个字符串。
我相信从文档中可以看出,“encoding”选项的值也不应该是字符串;请参阅此处的“编码”部分。
因此,请尝试以下操作:

const formatted = new THREE.WebGLCubeRenderTarget(
    texture.image.height, 
    {encoding: THREE.sRGBEncoding}
)

相关问题