通过纹理指针获取 WebGLTexture

时间:2021-03-04 21:27:01

标签: javascript unity3d webgl textures

我正在开发一个使用 unity WebGL 的项目。 我需要做的是在另一个浏览器窗口中显示游戏场景。 所以我尝试的是将场景渲染到 RenderTexture,并将纹理指针(来自 GetNativeTexturePtr())发送到浏览器端。 当我发送纹理指针时,我使用了这个 jsdll 函数,例如:

ExtractWindow: function (windowId, w, h, texturePtr) {
    ViewerManager.OnExtractWindow(windowId, w, h, GLctx, GL.textures[texturePtr]);
}

我使用了 GL.textures[texturePtr],因为我在 https://docs.unity3d.com/Manual/webgl-interactingwithbrowserscripting.html 中看到了它。 我认为它应该返回 WebGLTexture 对象,但它返回 null。 这是我知道的获得 WebGLTexture 的唯一方法(我几乎是 WebGL 和 Javascript 的初学者)。我什至不确定 GL.texutre[] 是统一方法还是 WebGL 方法。 有人知道“GL.texture[]”是如何工作的吗?或者还有其他方法通过纹理指针获取 WebGLTexture 吗?

感谢您阅读我的问题。

1 个答案:

答案 0 :(得分:0)

回答我自己的问题。 "GL.textures[texturePtr]" 返回 null 的原因是因为 texturePtr 为 0。我发现 GetNativeTexturePtr() 有时有效,有时只返回 0,我不知道为什么它会这样工作。但我发现的解决方法是在调用 GetNativeTexturePtr() 之前调用渲染纹理的“colorBuffer”属性,然后它返回正确的 ptr。

        var cb = _renderTexture.colorBuffer;
        var texId = _renderTexture.GetNativeTexturePtr().ToInt64();
        // texId is not 0 anymore.