electron egl初始化:没有可用的渲染器

lmvvr0a8  于 2023-06-04  发布在  Electron
关注(0)|答案(1)|浏览(506)

我正在尝试使用电子。我跟随他们的指引:https://www.electronjs.org/docs/latest/tutorial/tutorial-first-app
但是当我运行npm run start时,我得到这个错误:

Hello from Electron ­ƒæï
[1816:0521/233607.695:ERROR:gl_display.cc(508)] EGL Driver message (Critical) eg
lInitialize: No available renderers.
[1816:0521/233607.695:ERROR:gl_display.cc(920)] eglInitialize D3D11 failed with
error EGL_NOT_INITIALIZED, trying next display type
[1816:0521/233607.805:ERROR:gl_display.cc(508)] EGL Driver message (Error) eglCr
eateContext: Requested GLES version (3.0) is greater than max supported (2, 0).
[1816:0521/233607.805:ERROR:gl_context_egl.cc(370)] eglCreateContext failed with
 error EGL_SUCCESS
[1816:0521/233607.815:ERROR:gl_display.cc(508)] EGL Driver message (Error) eglCr
eateContext: Requested GLES version (3.0) is greater than max supported (2, 0).
[1816:0521/233607.815:ERROR:gl_context_egl.cc(370)] eglCreateContext failed with
 error EGL_SUCCESS
[1816:0521/233607.815:ERROR:gpu_channel_manager.cc(884)] Failed to create GLES3
context, fallback to GLES2.
[5960:0521/233807.613:ERROR:gpu_init.cc(523)] Passthrough is not supported, GL i
s disabled, ANGLE is

我该怎么解决这个问题?
其他信息:
我使用Windows 7,所以我使用npm install electron@v22.3.10,因为版本>=23不再与win7兼容,因此使用npm install electron --save-dev时,我使用了臭名昭著的error code ELIFECYCLE error errno 3221225785
Chrome(* 版本106. 0. 5249. 121(Build Officiel)(64位)*)在这台电脑上运行良好,但没有抱怨我的图形驱动程序。
我使用Electron的目标是将我的html5游戏转换为arm 64 Linux可执行文件。

vql8enpb

vql8enpb1#

您看到的错误消息表明Electron中的GPU(图形处理单元)加速存在问题。
具体来说,错误消息指出,EGL (Embedded-System Graphics Library)(图形渲染API(如OpenGL)和底层本机平台窗口系统之间的一层)无法找到任何可用的渲染器。
它还说请求的GLES (OpenGL ES)版本高于支持的版本。
Electron和Chrome一样,默认使用硬件加速。这意味着它会尝试使用计算机的GPU来执行一些与渲染相关的繁重任务。这可能会在某些系统上导致问题,尤其是较旧的系统或图形硬件或驱动程序不太常见的系统。
首先,确保更新图形驱动程序,并为图形硬件安装最新的驱动程序。
如果问题仍然存在,请尝试在Electron应用程序中禁用硬件加速。这可以通过在创建任何浏览器窗口之前在主进程中调用app.disableHardwareAcceleration()函数来完成。
这里的例子:

const { app, BrowserWindow } = require('electron')

app.disableHardwareAcceleration()

function createWindow () {
    const win = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
        nodeIntegration: true,
    }
    })

    win.loadFile('index.html')
}

app.whenReady().then(createWindow)

您还可以使用Chromium的渲染引擎选项强制软件渲染,以便在硬件加速不可用时使用软件渲染。您可以设置--ignore-gpu-blacklist命令行开关来启用此功能:

const { app, BrowserWindow } = require('electron')

app.commandLine.appendSwitch('ignore-gpu-blacklist')

function createWindow () {
    // ... same as before ...
}

app.whenReady().then(createWindow)

相关问题