Pixi.js: «WebGL не поддерживается в этом браузере» при использовании Chrome 74 с GTX 780

Созданный на 19 мая 2019  ·  43Комментарии  ·  Источник: pixijs/pixi.js


Я пробовал погуглить об ошибке, но он дает только 1 результат: китайский веб-сайт является мертвой ссылкой.

Ожидаемое поведение

Pixi.js загружается и запускается без ошибок с веб-пакетом. Он работает правильно, когда я собирал его, а затем использовал browserify.

Текущее поведение

Uncaught Error: WebGL unsupported in this browser, use "pixi.js-legacy" for fallback canvas2d support.
image

Возможное решение

Я не очень разбираюсь в экосистеме javascript, поэтому это может быть связано с плохой конфигурацией webpack 4, любая помощь будет принята с благодарностью!

Окружающая обстановка

Машинопись 3.4.5, Pixi.js 5.0.2, Webpack 4.31.0

Webpack.config.js, раздел Client - это часть кода, которая использует pixi.js

/// <binding BeforeBuild='Run - Development' />
const HtmlWebpackPlugin = require('html-webpack-plugin');
const path = require('path');
var pixiModule = path.join(__dirname, '/node_modules/pixi.js/')
const CleanWebpackPlugin = require('clean-webpack-plugin');


module.exports = [
    // Server
    {
        mode: "development",
        devtool: "inline-source-map",
        entry: "./app.ts",
        output: {
            filename: "./app.js"
        },
        target: 'node',
        node: {
            __dirname: false,
            __filename: false,
        },
        resolve: {
            // Add `.ts` and `.tsx` as a resolvable extension.
            extensions: [".ts", ".tsx", ".js"]
        },
        module: {
            rules: [
                // all files with a `.ts` or `.tsx` extension will be handled by `ts-loader`
                { test: /\.tsx?$/, loader: "ts-loader" }
            ]
        },
        plugins: [
            new CleanWebpackPlugin()
        ]
    },

    // Client
    {
        mode: "development",
        devtool: "inline-source-map",
        entry: "./public/typescripts/entry.ts",
        output: {
            library: "ASC",
            filename: "public/client.js"
        },
        target: 'web',
        resolve: {
            // Add `.ts` and `.tsx` as a resolvable extension.
            alias: {
                'PIXI': pixiModule,
            },
            extensions: [".ts", ".tsx", ".js"]
        },
        module: {
            rules: [
                // all files with a `.ts` or `.tsx` extension will be handled by `ts-loader`
                { test: /\.tsx?$/, loader: "ts-loader" },
                { test: /\.json$/, include: path.join(__dirname, 'node_modules', 'pixi.js'), loader: 'json-loader' },
                //We expose the non minified pixi file as a global. The minified one was not working with our solution
                { test: pixiModule, loader: 'expose-loader?pixi' }
            ]
        },
        plugins: [
            new HtmlWebpackPlugin({
                filename: 'public/index.html',
                template: 'public/index.html',
                inject: false
            }),
            new HtmlWebpackPlugin({
                filename: 'public/game.html',
                template: 'public/game.html',
                inject: false
            })
        ]
    }
];
  • pixi.js версия : 5.0.2
  • Браузер и версия : Chrome 74.0.3729.157
  • ОС и версия : _e.g. Windows 10

Самый полезный комментарий

Включение аппаратного ускорения сделало это за меня.

Chrome -> Настройки (⌘,) -> Дополнительно -> Система -> включить 1-й

Все 43 Комментарий

Если WebGL не поддерживается в этом браузере, используйте pixi.js-legacy для резервной поддержки canvas2d.

Это другой пакет в npm. В вашей конфигурации используется pixi.js

Если WebGL не поддерживается в этом браузере, используйте pixi.js-legacy для резервной поддержки canvas2d.

Это другой пакет в npm. В вашей конфигурации используется pixi.js

Но браузер, который я использую, явно поддерживает WebGL.
image
image

Подойдут ли вам примеры v5 на https://pixijs.io/examples/ ? Эта страница, которую вы показали, является базовой веб-страницей, да или нет. Но когда мы создаем контекст webgl, мы запрашиваем его с парой дополнительных параметров, например, с требованием поддержки трафарета.

В любом случае, в этом и заключается ошибка, и поэтому мы пытаемся помочь с этой точки зрения. Мы никогда не видели эту ошибку за пределами устройства, не поддерживающего webgl или параметры webgl, которые требуются pixijs.

Подойдут ли вам примеры v5 на https://pixijs.io/examples/ ? Эта страница, которую вы показали, является базовой веб-страницей, да или нет. Но когда мы создаем контекст webgl, мы запрашиваем его с парой дополнительных параметров, например, с требованием поддержки трафарета.

В любом случае, в этом и заключается ошибка, и поэтому мы пытаемся помочь с этой точки зрения. Мы никогда не видели эту ошибку за пределами устройства, не поддерживающего webgl или параметры webgl, которые требуются pixijs.

Эти примеры не работают (v4 работает, но не v5) и также дают ту же ошибку. Мне это кажется очень странным, я не уверен, почему мой браузер не поддерживает это.

Я также проверил свое рабочее приложение pixi.js, и оно использует 5.0.0-rc.2, может быть, поэтому оно работает?

Спасибо еще раз за помощь

v4 будет работать, потому что он возвращается к рендереру холста. В официальном выпуске для v5 нет, если вы не используете устаревший пакет.

Так что, возможно, ваша карта gfx поддерживает webgl, но не имеет чего-то вроде поддержки трафаретов, которая нам нужна для маскировки, поэтому мы отказываемся от попытки ее использовать?

На случай если это трафарет, попробуйте обновить драйвер видеокарты.

Однако будет очень забавно, если окажется, что webpack действительно влияет на вещи :)

Ладно, это очень странно, мой рабочий стол (i7 7700k, gtx 780) не запускает его, но он работает на моем Surface Book 1, моем iPhone XS и моих друзьях macbook pro 2015. Мой графический процессор довольно старый, но я этого не делал » не думаю, что это будет проблемой.

Если нет ничего другого, что я должен попробовать, я думаю, я просто воспользуюсь устаревшим пакетом, так как мне нужна максимальная совместимость (а также я не могу разработать то, что я не могу запустить)

Переустановите графический драйвер, версию вперед или назад. GPU - это не проблема, а вот часть драйвера opengl.

Подождите секунду, я чувствую себя очень глупо, я думаю, что это проблема с хромом, он работает в Microsoft Edge ... хотя я использовал хром и на своем ноутбуке, и на телефоне, так что это было странно.

В браузерах есть черный список для разного оборудования ... иногда нужно просто полностью отключить webgl, а иногда - занести в черный список определенные функции на определенных версиях оборудования / драйверов, если есть известные проблемы.

Я обновил название этой проблемы (не проблема Webpack + PixiJS) и пометил ее как «Не исправлю», поскольку, скорее всего, это проблема с оборудованием или драйверами.

Хорошо, поэтому использование pixi.js-legacy и изменение всего на ссылку pixi.js-legacy по-прежнему дает ту же ошибку.

Я проверил свою рабочую версию с помощью 5.0.0-rc.2, и она _работает_ с использованием webgl2:
image

Но использование 5.0.0-rc.2 дает мне эту ошибку: «Uncaught TypeError: Cannot read property 'performMixins' of undefined» в моей версии webpack.
image

Любая помощь будет оценена, спасибо!

Пожалуйста, не используйте 5.0.0-rc.2. Используйте последнюю версию: 5.0.3

Я только что попробовал 5.0.3, «Неперехваченная ошибка: WebGL не поддерживается в этом браузере, используйте pixi.js-legacy для резервной поддержки canvas2d». как прежде. У меня есть работающая версия, использующая PixiJS 5.0.0-rc.2, в которой говорится, что она работает с WebGl 2, есть ли какие-то новые функции, добавленные в 5.0.1+, из-за которых она не работает?

Проведение небольшого количества тестов показывает некоторые потенциальные странности

  1. Раздраженный
    Примеры V5 выполняются, но с _WebGL 1? _
    image
    Примеры V4 снова запускаются с _WebGL 1_
    image
    Моя рабочая игра (https://ascension.azurewebsites.net/game.html) запускает Pixi.js 5.0.0-rc.2, работает с _Webgl 1_
    image
    Моя игра webpack загружается с Pixi.js 5.0.3 с _WebGL 1_, но не работает должным образом
    image
  2. В Chrome
    V5 не работает
    image
    V4 работает, но с _canvas_
    image
    Моя рабочая игра работает с 5.0.0-rc.2 с _webgl 2_
    image
    В моей игре webpack есть ошибка, как описано в сообщении с 5.0.3.
    image

Не уверен, что это вообще помогает, но мне кажется странным

Я предполагаю, что единственный хороший способ - создать функцию, которая создает контекст так же, как это делает pixi (запрашивает « stencil: true » и тестирует его без pixi, просто простой html + js.

Затем вы можете предоставить свой отчет со спецификациями и демонстрацией разработчикам хрома в хромированном багтрекере.

Я понимаю, что это очень долгий путь, но по сравнению с mozilla они быстрее и есть надежда :)

Еще раз спрашиваю: вы пробовали обновить драйвер?

Я предполагаю, что единственный хороший способ - создать функцию, которая создает контекст так же, как это делает pixi (запрашивает « stencil: true » и тестирует его без pixi, просто простой html + js.

Затем вы можете предоставить свой отчет со спецификациями и демонстрацией разработчикам хрома в хромированном багтрекере.

Я понимаю, что это очень долгий путь, но по сравнению с mozilla они быстрее и есть надежда :)

Еще раз спрашиваю: вы пробовали обновить драйвер?

Да, я обновил свои драйверы, я также включил вычисление webGL 2.0 в Chrome: // flags .

Вы подозреваете, что это проблема со стороны Chrome? Я попробую ваше предложение и посмотрю, что выйдет.

По совпадению, у gtx 780 и 780ti были проблемы с вылетом во время игры "Nier Automata", возможно, просто драйверы для этой карты каким-то образом сломаны.

Хорошо, я написал этот быстрый тестовый javascript:

    var canvas = document.createElement("canvas");
    // Get WebGLRenderingContext from canvas element.
    console.log("Context (no args):");
    var a = canvas.getContext("webgl");
    console.dirxml(a.getContextAttributes());
    console.log("Context (stencil):" );
    var b = canvas.getContext("webgl",{ stencil: true});
    console.dirxml( b.getContextAttributes());
    console.log("Context (failIfMajorPerformanceCaveat):" );
    var c = canvas.getContext("webgl",{ failIfMajorPerformanceCaveat: true});
    console.dirxml( c.getContextAttributes());
    console.log("Context (Both):" );
    var d = canvas.getContext("webgl",{ stencil: true, failIfMajorPerformanceCaveat: true });
    console.dirxml( d.getContextAttributes());
    console.log("Context (Alias):" );
    var e = canvas.getContext("webgl",{ antialias: false});
    console.dirxml( e.getContextAttributes());

И кажется, что, что бы я ни старался, я не могу добиться того, чтобы трафарет был правдой. Я пробовал это как на моем компьютере, так и на ноутбуке (ноутбук работает с v5). Я не уверен, что делать на данный момент.

Сделайте хак pixi, который отключает его, удалите вложение трафарета, которое создается по умолчанию для кадровых буферов RenderTexture, и постарайтесь не использовать маски;)

Или пойти другим путем, попробовать СТАРЫЕ драйверы :) Кстати, у пользователей Linux такие проблемы часто возникают.

Хорошо, закрываю этот вопрос. Pixi.js, похоже, правильно работает с firefox (webgl 2), так что пока я просто воспользуюсь им. Я думаю, что это может быть специфическая комбинация драйверов и хрома, из-за которой он не работает. Я пробовал несколько примеров v5 на машинах, начиная от старых книг Mac, старых машин с Windows 7 и моего ноутбука с Windows 10. Просто кажется, что мой компьютер - какой-то странный выброс, если люди столкнутся с этой проблемой с firefox, chrome и edge, возможно, стоит повторно открыть этот билет.

Спасибо за всю помощь, ребята!

Ладно, не открывать заново. Это была 100% моя установка Chrome, что-то как-то испортило, переключение на бета-канал вроде как исправило.
(Возникновение с chrome: // flags не помогло, и удаление всех расширений тоже ничего не дало).

Этот тип проблемы очень полезен для будущих пользователей, которые могут столкнуться с той же проблемой в аналогичной среде. Спасибо, что предоставили так много подробностей.

Ладно, не открывать заново. Это была 100% моя установка Chrome, что-то как-то испортило, переключение на бета-канал вроде как исправило.
(Возникновение с chrome: // flags не помогло, и удаление всех расширений тоже ничего не дало).

Я могу подтвердить, что это сработало и для меня, установка бета-версии Chrome запустила приложение. Спасибо.

Случайное открытие: это не вина бета-версии Chrome:

По какой-то причине у меня отключили аппаратное ускорение.

Включение аппаратного ускорения сделало это за меня.

Chrome -> Настройки (⌘,) -> Дополнительно -> Система -> включить 1-й

@ivanpopelyshev Можно ли решить эту проблему с помощью альтернативного метода маскировки в WebGL? В этом потоке stackoverflow есть еще пара вариантов с пояснениями.

Думаю, если мы включим его вручную, это не поможет пользователю. Код ниже работал у меня!
import * as PIXI from 'pixi.js-legacy'

Я столкнулся с этой проблемой, используя Chrome, из-за того, что у меня отключена настройка аппаратного ускорения. Я, должно быть, отключил его некоторое время назад, потому что он должен быть включен по умолчанию.

Но мне любопытно, почему Pixi не загружается в этом случае, ведь разве он не должен возвращаться к холсту HTML 5?

image

@ immanuelx2 Документ, скриншот которого вы разместили, устарел. Резервный вариант Canvas был перемещен в устаревшую ветку из версии 5.0.0 - см. Объявление о выпуске здесь: https://medium.com/goodboy-digital/pixijs-v5-lands-5e112d84e510

Используйте pixi.js-legacy, если вам все еще нужен резервный вариант холста; основная ветвь больше не поддерживает холст, это «только» WebGL, и он работает быстрее.

Я столкнулся с этой проблемой при открытии своего приложения на новой вкладке после получения сообщения об ошибке: CONTEXT_LOST_WEBGL

Закрытие хрома, а затем его перезапуск помогли мне решить эту проблему.

РЕДАКТИРОВАТЬ:
Я попытался воспроизвести в соответствии с описанными выше действиями, но не смог.

особенности:
хром: 77.0.3865.90
osx: 10.14.6
графика: Radeon Pro Vega 20 4 ГБ, Intel UHD Graphics 630 1536 МБ

Итак, у меня такая же проблема, как у @winterNebs, но для меня Chrome, похоже, в порядке с версией> 5.0.0-rc.2, а firefox сообщает мне, что webgl не поддерживается

Если у кого-то еще есть эта проблема. Пришлось вручную включить флаг « Переопределить список программного рендеринга » chrome: // flags

особенности:
хром: 78.0.3904.97
osx: 10.13.6

Спасибо @goodgecko - хотя библиотека все еще нуждается в исправлении; неразумно и нецелесообразно просить конечных пользователей выполнить этот шаг, чтобы обойти это. Автоматический откат должен быть надежным.

У меня точно такая проблема как в Linux, так и в Windows в Brave Browser 1.1.23 на основе Chromium 79.0.3945.88.
Что интересно, обычный Chrome, основанный на той же сборке Chromium, работает просто отлично.
Firefox 71.0 работает нормально, без каких-либо проблем.

Совет @goodgecko не помог

Проверить состояние аппаратного ускорения (расширенное) в настройках Chrome? Та же проблема появилась, когда я закрыл эту опцию на Chrome.
Желаю, чтобы это помогло.

Проверить состояние аппаратного ускорения (расширенное) в настройках Chrome? Та же проблема появилась, когда я закрыл эту опцию на Chrome.
Желаю, чтобы это помогло.

Это сработало для меня. Пришлось включить аппаратное ускорение

Для меня даже страннее. Https://get.webgl.org/ работает. Примеры PIXI v5 работают нормально, даже с масками

Но когда я пытаюсь открыть свою игру, она говорит, что WebGL не поддерживается.

Если у кого-то еще есть эта проблема. Пришлось вручную включить флаг « Переопределить список программного рендеринга » chrome: // flags

особенности:
хром: 78.0.3904.97
osx: 10.13.6

Это сработало для меня, спасибо!

У меня была такая же проблема с Chrome стабильной 80.0. +, Ubuntu 18.04 с использованием драйвера X.Org X Server Nouveau с открытым исходным кодом. Я прошел тест WebGL и решил, что это должен быть драйвер, поэтому после установки проприетарного (Nvidia) теперь все работает нормально.

Случайное открытие: это не вина бета-версии Chrome:

По какой-то причине у меня отключили аппаратное ускорение.

То же самое. У меня отключено аппаратное ускорение. Я ранее отключал его для записи браузера в OBS.

Та же проблема с Chrome 83 | macos 10.13.6 | nVidia Geforce 210

Примеры PixiJS отлично работают с Firefox:
консольный вывод

PixiJS 5.3.0 - WebGL 1 - http://www.pixijs.com/

но с Chrome возвращается к Canvas:
консоль вывода

PixiJS 5.3.0 - Canvas - http://www.pixijs.com/

Примеры @ Fxlr8 работают нормально, потому что Chrome возвращается к Canvas. Откройте веб-консоль и проверьте ее.

У меня это сработало!
image

Можем ли мы заблокировать эту тему? Здесь больше нечего добавить, проблема заключалась в ускорении hw.

Если у вас все еще есть проблема, это другая проблема, поэтому вам следует открыть новый поток, а не отключать его.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги