cocos / cocos-engine

Cocos simplifies game creation and distribution with Cocos Creator, a free, open-source, cross-platform game engine. Empowering millions of developers to create high-performance, engaging 2D/3D games and instant web entertainment.
https://www.cocos.com/en/creator
Other
8.21k stars 1.94k forks source link

某些设备并不支持 createVertexArrayOES() 方法 ,cocos没有正确处理. #17684

Open finscn opened 3 weeks ago

finscn commented 3 weeks ago

Cocos Creator version

3.8.3

System information

all

Issue description

线上微信小游戏 (抖音小游戏没有此错误) 报错.

image

看了下 Cocos 源码.

        if (device.extensions.useVAO) {
            const vao = device.extensions.OES_vertex_array_object!;

            // check vao
            let glVAO = gpuInputAssembler.glVAOs.get(gpuShader.glProgram!);
            if (!glVAO) {
                glVAO = vao.createVertexArrayOES()!;
    ... ...

cocos似乎认为 只要 useVAO 为真, 就一定有 OES_vertex_array_object, 且一定有 createVertexArrayOES() 方法. 但是目前看来 , 实际情况并非如此.

Relevant error log output

No response

Steps to reproduce

如上

Minimal reproduction project

No response

minggo commented 2 weeks ago

device.extensions.useVAO 是引擎动态获取的。如果系统返回 true,而实际不是这样,那么引擎也没有好的办法。

finscn commented 2 weeks ago

device.extensions.useVAO 是引擎动态获取的。如果系统返回 true,而实际不是这样,那么引擎也没有好的办法。

目前这个错误只有 微信小游戏有. 所以可能是微信的bug ? 要不你们和微信官方沟通下?