如何使用多个画布上下文?

Dan*_*Fox 13 javascript webgl html5-canvas

我想用experimental-webgl,和2d画布上下文也一样.在我绘制了3d对象之后,我想在它上面绘制一些2d对象.

我该怎么办?

ben*_*ich 12

你需要一个单独的画布.你可以把另一个画布放在第一个画布上,这不算是不好的做法.


pim*_*vdb 11

您不能将多个上下文用于一个canvas元素.在WebKit中,这在源代码中明确提到:

// A Canvas can either be "2D" or "webgl" but never both.
Run Code Online (Sandbox Code Playgroud)

如果你确实要求另一个上下文,你得到null:

    if ((type == "webkit-3d") ||
        (type == "experimental-webgl")) {
        if (m_context && !m_context->is3d())
            return 0;
Run Code Online (Sandbox Code Playgroud)

(因此,如果您在已有其他上下文时请求3D上下文,则可以获得null.)

你可能想要的是两个画布元素 - 一个用于3D东西,另一个用于2D东西.如果将它们放在一起,它们可以作为两层,您可以独立地在每个画布上绘制.