์ธํฐ๋ท์์ ์ค๋ฅ๋ฅผ ๊ฒ์ํด ๋ณด์์ง๋ง ์ฃฝ์ ๋งํฌ์ธ ์ค๊ตญ ์น์ฌ์ดํธ๋ผ๋ 1๊ฐ์ ๊ฒฐ๊ณผ๋ง ๋์ต๋๋ค.
Pixi.js๋ webpack์์ ์ค๋ฅ ์์ด ๋ก๋๋๊ณ ์คํ๋ฉ๋๋ค. ๋ฒ๋ค๋ก ์ฌ์ฉํ ๋ค์ browserify๋ฅผ ์ฌ์ฉํ ๋ ์ ๋๋ก ์คํ๋ฉ๋๋ค.
Uncaught Error: WebGL unsupported in this browser, use "pixi.js-legacy" for fallback canvas2d support.
์ ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ํ๊ณ์ ๋ํ ๊ฒฝํ์ด ๋ง์ง ์์ผ๋ฏ๋ก webpack 4์ ์๋ชป๋ ๊ตฌ์ฑ์ผ๋ก ์ธํ ๊ฒ์ผ ์ ์์ต๋๋ค. ์ด๋ค ๋์์ด๋ผ๋ ์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค!
Typescript 3.4.5, Pixi.js 5.0.2, Webpack 4.31.0
Webpack.config.js, ํด๋ผ์ด์ธํธ ์น์ ์ 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์ด ๋ธ๋ผ์ฐ์ ์์ WebGL์ด ์ง์๋์ง ์๋ ๊ฒฝ์ฐ ๋์ฒด canvas2d ์ง์์ ์ํด pixi.js-legacy
๋ฅผ ์ฌ์ฉํ์ญ์์ค.
npm์ ๋ค๋ฅธ ๋ฒ๋ค์
๋๋ค. ๊ตฌ์ฑ์์ pixi.js
์ด ๋ธ๋ผ์ฐ์ ์์ WebGL์ด ์ง์๋์ง ์๋ ๊ฒฝ์ฐ ๋์ฒด canvas2d ์ง์์ ์ํด
pixi.js-legacy
๋ฅผ ์ฌ์ฉํ์ญ์์ค.npm์ ๋ค๋ฅธ ๋ฒ๋ค์ ๋๋ค. ๊ตฌ์ฑ์์
pixi.js
ํ์ง๋ง ๋ด๊ฐ ์ฌ์ฉํ๋ ๋ธ๋ผ์ฐ์ ๋ ๋ถ๋ช
ํ WebGL์ ์ง์ํฉ๋๋ค.
https://pixijs.io/examples/์ ์๋ v5 ์์ ๊ฐ ์ ํฉํฉ๋๊น? ๋น์ ์ด ๋ณด์ฌ์ค ๊ทธ ํ์ด์ง๋ ๊ธฐ๋ณธ webgl, ์ ๋๋ ์๋์ค์ ๋๋ค. ๊ทธ๋ฌ๋ webgl ์ปจํ ์คํธ๋ฅผ ์์ฑํ ๋ ์คํ ์ค ์ง์ ์๊ตฌ์ ๊ฐ์ ๋ช ๊ฐ์ง ์ถ๊ฐ ๋งค๊ฐ๋ณ์์ ํจ๊ป ์์ฒญํฉ๋๋ค.
์ด์จ๋ ๊ทธ๊ฒ์ด ์ค๋ฅ์ด๋ฉฐ, ๊ทธ๊ฒ์ด ์ฐ๋ฆฌ๊ฐ ๋์์ ๋๋ฆฌ๋ ค๊ณ ๋ ธ๋ ฅํ๋ ์ด์ ์ ๋๋ค. webgl์ ์ง์ํ์ง ์๊ฑฐ๋ pixijs๊ฐ ์๊ตฌํ๋ webgl ๋งค๊ฐ๋ณ์๋ฅผ ์ง์ํ์ง ์๋ ์ฅ์น ์ธ๋ถ์ ์ค๋ฅ๋ฅผ ๋ณธ ์ ์ด ์์ต๋๋ค.
https://pixijs.io/examples/์ ์๋ v5 ์์ ๊ฐ ์ ํฉํฉ๋๊น? ๋น์ ์ด ๋ณด์ฌ์ค ๊ทธ ํ์ด์ง๋ ๊ธฐ๋ณธ webgl, ์ ๋๋ ์๋์ค์ ๋๋ค. ๊ทธ๋ฌ๋ webgl ์ปจํ ์คํธ๋ฅผ ์์ฑํ ๋ ์คํ ์ค ์ง์ ์๊ตฌ์ ๊ฐ์ ๋ช ๊ฐ์ง ์ถ๊ฐ ๋งค๊ฐ๋ณ์์ ํจ๊ป ์์ฒญํฉ๋๋ค.
์ด์จ๋ ๊ทธ๊ฒ์ด ์ค๋ฅ์ด๋ฉฐ, ๊ทธ๊ฒ์ด ์ฐ๋ฆฌ๊ฐ ๋์์ ๋๋ฆฌ๋ ค๊ณ ๋ ธ๋ ฅํ๋ ์ด์ ์ ๋๋ค. webgl์ ์ง์ํ์ง ์๊ฑฐ๋ pixijs๊ฐ ์๊ตฌํ๋ webgl ๋งค๊ฐ๋ณ์๋ฅผ ์ง์ํ์ง ์๋ ์ฅ์น ์ธ๋ถ์ ์ค๋ฅ๋ฅผ ๋ณธ ์ ์ด ์์ต๋๋ค.
์ด๋ฌํ ์๋ ์๋ํ์ง ์์ผ๋ฉฐ(v4๋ ์๋ํ์ง๋ง v5๋ ์๋ํ์ง ์์) ๋์ผํ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ๊ทธ๊ฒ์ ๋์๊ฒ ์ ๋ง ์ด์ํ๊ฒ ๋ณด์ ๋๋ค. ์ ๋ด ๋ธ๋ผ์ฐ์ ๊ฐ ๊ทธ๊ฒ์ ์ง์ํ์ง ์๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
๋ํ ์๋ํ๋ pixi.js ์ฑ์ ํ์ธํ๋๋ฐ 5.0.0-rc.2๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ์ด๊ฒ์ด ์๋ํ๋ ์ด์ ์ผ ์ ์์ต๋๋ค.
๋์์ ์ฃผ์ ์ ๋ค์ ํ ๋ฒ ๊ฐ์ฌ๋๋ฆฝ๋๋ค
v4๋ ์บ๋ฒ์ค ๋ ๋๋ฌ๋ก ๋์๊ฐ๊ธฐ ๋๋ฌธ์ ์๋ํฉ๋๋ค. v5์ ๊ณต์ ๋ฆด๋ฆฌ์ค์์๋ ๋ ๊ฑฐ์ ํจํค์ง๋ฅผ ์ฌ์ฉํ์ง ์๋ ํ ๊ทธ๋ ์ง ์์ต๋๋ค.
๋ฐ๋ผ์ gfx ์นด๋๊ฐ webgl์ ์ง์ํ์ง๋ง ๋ง์คํน์ ํ์ํ ์คํ ์ค ์ง์๊ณผ ๊ฐ์ ๊ฒ์ด ์๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ ์๋๋ฅผ ๊ฑฐ๋ถํฉ๋๊น?
์คํ ์ค์ธ ๊ฒฝ์ฐ ๊ทธ๋ํฝ ๋๋ผ์ด๋ฒ๋ฅผ ์ ๋ฐ์ดํธํด ๋ณด์ญ์์ค.
๊ทธ๋ฌ๋ webpack์ด ์ค์ ๋ก ์ํฅ์ ๋ฏธ์น๋ค๋ ์ฌ์ค์ด ๋ฐํ์ง๋ฉด ๋งค์ฐ ์ฌ๋ฏธ์์ ๊ฒ์ ๋๋ค. :)
๋ด ๋ฐ์คํฌํ(i7 7700k, gtx 780)์ด ์คํ๋์ง ์๋ ๊ฒ์ ์ด์ํ์ง๋ง ๋ด ์ํผ์ค ๋ถ 1, ๋ด iPhone XS ๋ฐ ๋ด ์น๊ตฌ macbook pro 2015์์๋ ์๋ํฉ๋๋ค. ๋ด GPU๋ ์ข ์ค๋๋์์ง๋ง ' ๊ทธ๊ฒ์ด ๋ฌธ์ ๊ฐ ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ง ๋ง์ญ์์ค.
๋ด๊ฐ ์๋ํด์ผ ํ ๋ค๋ฅธ ๊ฒ์ด ์๋ค๋ฉด ๋๋ ์ต๋ํ์ ํธํ์ฑ์ ์ํ๊ธฐ ๋๋ฌธ์ ๋ ๊ฑฐ์ ํจํค์ง๋ฅผ ์ฌ์ฉํ ๊ฒ์ ๋๋ค (๋ํ ์คํํ ์์๋ ๊ฒ์ ์ค์ ๋ก ๊ฐ๋ฐํ ์๋ ์์ต๋๋ค)
๊ทธ๋ํฝ ๋๋ผ์ด๋ฒ๋ฅผ ์ด์ ๋ฒ์ ๋๋ ์ด์ ๋ฒ์ ์ผ๋ก ๋ค์ ์ค์นํฉ๋๋ค. GPU๋ ๋ฌธ์ ๊ฐ ์๋์ง๋ง ๋๋ผ์ด๋ฒ์ OpenGL ๋ถ๋ถ์ ๋ฌธ์ ์ ๋๋ค.
์ ์๋ง์. ์ ๋ง ๋ฉ์ฒญํ ๊ฒ ๊ฐ์์. ํฌ๋กฌ ๋ฌธ์ ์ธ ๊ฒ ๊ฐ์์. Microsoft edge์์ ์๋ํฉ๋๋ค. ๋ฉํฑ๊ณผ ํด๋ํฐ ๋ชจ๋์์ ํฌ๋กฌ์ ์ฌ์ฉํ๊ณ ์์๊ธฐ ๋๋ฌธ์ ์ด์ํ์ต๋๋ค.
๋ธ๋ผ์ฐ์ ์๋ ๋ค์ํ ํ๋์จ์ด์ ๋ํ ๋ธ๋๋ฆฌ์คํธ๊ฐ ์์ต๋๋ค. ๋๋ก๋ webgl์ ์์ ํ ๋นํ์ฑํํ์ง๋ง ์๋ ค์ง ๋ฌธ์ ๊ฐ ์๋ ๊ฒฝ์ฐ ํน์ ํ๋์จ์ด/๋๋ผ์ด๋ฒ ๋ฒ์ ์ ํน์ ๊ธฐ๋ฅ์ ๋ธ๋๋ฆฌ์คํธ์ ์ถ๊ฐํ๋ ๊ฒฝ์ฐ๋ ์์ต๋๋ค.
๋๋ ์ด ๋ฌธ์ ์ ์ ๋ชฉ์ ์ ๋ฐ์ดํธํ๊ณ (Webpack + PixiJS ๋ฌธ์ ๊ฐ ์๋) ํ๋์จ์ด/๋๋ผ์ด๋ฒ ๋ฌธ์ ์ผ ๊ฐ๋ฅ์ฑ์ด ๋งค์ฐ ๋๊ธฐ ๋๋ฌธ์ "์์ ํ์ง ์์"์ผ๋ก ํ์ํ์ต๋๋ค.
์ข์, ๊ทธ๋์ pixi.js-legacy๋ฅผ ์ฌ์ฉํ๊ณ pixi.js-legacy๋ฅผ ์ฐธ์กฐํ๋๋ก ๋ชจ๋ ๊ฒ์ ๋ณ๊ฒฝํ๋ฉด ์ฌ์ ํ ๋์ผํ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
5.0.0-rc.2๋ฅผ ์ฌ์ฉํ์ฌ ์์
๋ฒ์ ์ ํ์ธํ์ผ๋ฉฐ webgl2๋ฅผ ์ฌ์ฉํ์ฌ _does_ ์๋ํฉ๋๋ค.
๊ทธ๋ฌ๋ 5.0.0-rc.2๋ฅผ ์ฌ์ฉํ๋ฉด ๋ด ์นํฉ ๋ฒ์ ์์ "Uncaught TypeError: Cannot read property 'performMixins' of undefined" ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
๋์์ ์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค!
5.0.0-rc.2๋ฅผ ์ฌ์ฉํ์ง ๋ง์ญ์์ค. ์ต์ ๋ฆด๋ฆฌ์ค ์ฌ์ฉ: 5.0.3
๋ฐฉ๊ธ 5.0.3, "์กํ์ง ์์ ์ค๋ฅ: WebGL์ด ์ด ๋ธ๋ผ์ฐ์ ์์ ์ง์๋์ง ์์ต๋๋ค. ๋์ฒด canvas2d ์ง์์ ์ํด "pixi.js-legacy"๋ฅผ ์ฌ์ฉํ์ญ์์ค." ์ด์ ๊ณผ. WebGl 2์ ํจ๊ป ์คํ๋๋ PixiJS 5.0.0-rc.2๋ฅผ ์ฌ์ฉํ๋ ์คํ ์ค์ธ ๋ฒ์ ์ด ์์ต๋๋ค. 5.0.1+์ ์ถ๊ฐ๋์ด ์๋ํ์ง ์๋ ๋ช ๊ฐ์ง ์๋ก์ด ๊ธฐ๋ฅ์ด ์์ต๋๊น?
์กฐ๊ธ ๋ ํ ์คํธํ๋ฉด ์ ์ฌ์ ์ธ ๊ธฐ์ดํจ์ด ๋ํ๋ฉ๋๋ค.
์ด๊ฒ์ด ์ ํ ๋์์ด๋๋์ง ํ์คํ์ง ์์ง๋ง ๋์๊ฒ๋ ์ด์ํ๊ฒ ๋ณด์ ๋๋ค.
์ ์ผํ ์ข์ ๋ฐฉ๋ฒ์ pixi์ ๋์ผํ ๋ฐฉ์์ผ๋ก ์ปจํ ์คํธ๋ฅผ ์์ฑํ๋ ํจ์๋ฅผ ๋ง๋๋ ๊ฒ์ ๋๋ค(" stencil:true "๋ฅผ ์์ฒญํ๊ณ pixi ์์ด ์ผ๋ฐ html+js๋ง ํ ์คํธ).
๊ทธ๋ฐ ๋ค์ chromium bugtracker์์ chromium ๊ฐ๋ฐ์์๊ฒ ์ฌ์ ๋ฐ ๋ฐ๋ชจ๊ฐ ํฌํจ๋ ๋ณด๊ณ ์๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค.
๋๋ ๊ทธ๊ฒ์ด ๋งค์ฐ ๋จผ ๊ธธ์ด๋ผ๋ ๊ฒ์ ์ดํดํ์ง๋ง, mozilla์ ๋น๊ตํ ๋ ๋ ๋น ๋ฅด๊ณ ํฌ๋ง์ด ์์ต๋๋ค. :)
๋ค์ ๋ฌป์ต๋๋ค. ๋๋ผ์ด๋ฒ ์ ๋ฐ์ดํธ๋ฅผ ์๋ํ์ จ์ต๋๊น?
์ ์ผํ ์ข์ ๋ฐฉ๋ฒ์ pixi์ ๋์ผํ ๋ฐฉ์์ผ๋ก ์ปจํ ์คํธ๋ฅผ ์์ฑํ๋ ํจ์๋ฅผ ๋ง๋๋ ๊ฒ์ ๋๋ค(" stencil:true "๋ฅผ ์์ฒญํ๊ณ pixi ์์ด ์ผ๋ฐ html+js๋ง ํ ์คํธ).
๊ทธ๋ฐ ๋ค์ chromium bugtracker์์ chromium ๊ฐ๋ฐ์์๊ฒ ์ฌ์ ๋ฐ ๋ฐ๋ชจ๊ฐ ํฌํจ๋ ๋ณด๊ณ ์๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค.
๋๋ ๊ทธ๊ฒ์ด ๋งค์ฐ ๋จผ ๊ธธ์ด๋ผ๋ ๊ฒ์ ์ดํดํ์ง๋ง, mozilla์ ๋น๊ตํ ๋ ๋ ๋น ๋ฅด๊ณ ํฌ๋ง์ด ์์ต๋๋ค. :)
๋ค์ ๋ฌป์ต๋๋ค. ๋๋ผ์ด๋ฒ ์ ๋ฐ์ดํธ๋ฅผ ์๋ํ์ จ์ต๋๊น?
์, ๋๋ผ์ด๋ฒ๋ฅผ ์ ๋ฐ์ดํธํ์ผ๋ฉฐ Chrome://flags ์์๋ webGL 2.0 ์ปดํจํ ์ ์ผญ๋๋ค.
Chrome ์ธก์ ๋ฌธ์ ๋ผ๊ณ ์๊ฐํ์ญ๋๊น? ๋๋ ๋น์ ์ ์ ์์ ์๋ํ๊ณ ์ด๋ค ์ผ์ด ์ผ์ด๋๋์ง ๋ณผ ๊ฒ์ ๋๋ค.
๊ณต๊ต๋กญ๊ฒ๋ gtx 780 ๋ฐ 780ti๋ "Nier Automata" ๊ฒ์์ ํ๋ ์ดํ๋ ๋์ ์ถฉ๋ํ๋ ๋ฌธ์ ๊ฐ ์์์ต๋๋ค. ์ด ์นด๋์ ๋๋ผ์ด๋ฒ๊ฐ ์ด๋ค ์์ผ๋ก๋ ์์๋์์ ์ ์์ต๋๋ค.
์ข์, ๋๋ ์ด ๋น ๋ฅธ ํ ์คํธ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ๋ค:
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());
๊ทธ๋ฆฌ๊ณ ์๋ฌด๋ฆฌ ๋ ธ๋ ฅํด๋ ์คํ ์ค์ ์ฌ์ค๋ก ๋ง๋ค ์ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋ด PC์ ๋ ธํธ๋ถ ๋ชจ๋์์ ์ด๊ฒ์ ์๋ํ์ต๋๋ค(๋ ธํธ๋ถ์ v5์์ ์๋ํฉ๋๋ค). ์ด ์์ ์์ ๋ฌด์์ ํด์ผํ ์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
pixi๋ฅผ ๋นํ์ฑํํ์ฌ RenderTexture ํ๋ ์ ๋ฒํผ์ ๋ํด ๊ธฐ๋ณธ์ ์ผ๋ก ์์ฑ๋๋ ์คํ ์ค ์ฒจ๋ถ ํ์ผ์ ์ ๊ฑฐํ๊ณ ๋ง์คํฌ๋ฅผ ์ฌ์ฉํ์ง ์๋๋ก ํ์ญ์์ค. ;)
๋๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก OLD ๋๋ผ์ด๋ฒ๋ฅผ ์ฌ์ฉํด๋ณด์ญ์์ค. Btw Linux ์ฌ์ฉ์๋ ์ด๋ฌํ ์ข ๋ฅ์ ๋ฌธ์ ๊ฐ ์์ฃผ ๋ฐ์ํฉ๋๋ค.
์๊ฒ ์ต๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ์ข ๋ฃํฉ๋๋ค. Pixi.js๋ firefox (webgl 2)๋ฅผ ์ฌ์ฉํ์ฌ ์ ๋๋ก ์๋ํ๋ ๊ฒ ๊ฐ์ผ๋ฏ๋ก ์ง๊ธ์ ๊ทธ๋ฅ ์ฌ์ฉํ๊ฒ ์ต๋๋ค. ๋๋ผ์ด๋ฒ + ํฌ๋กฌ์ _ํน์ _ ์กฐํฉ์ผ๋ก ์ธํด ์๋ํ์ง ์์ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋๋ ์ค๋๋ ๋งฅ๋ถ, ์ค๋๋ ์๋์ฐ 7 ๋จธ์ , ์๋์ฐ 10 ๋ ธํธ๋ถ์ ์ด๋ฅด๋ ๋จธ์ ์์ ์ฌ๋ฌ ์์ v5๋ฅผ ์๋ํ๋ค. ์ฌ๋๋ค์ด ํ์ด์ดํญ์ค, ํฌ๋กฌ, ์์ง์์ ์ด ๋ฌธ์ ์ ์ง๋ฉดํ๋ค๋ฉด ์ด ํฐ์ผ์ ๋ค์ ์ด ๊ฐ์น๊ฐ ์์ ๊ฒ์ ๋๋ค.
๋ชจ๋ ๋์ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค!
์ข์ ์ฌ๊ฐ๋ด ์ํด 100% ๋ด ํฌ๋กฌ ์ค์น ์๊ณ ๋ฒ ํ ์ฑ๋๋ก ์ ํํ๋ฉด ํด๊ฒฐ๋๋ ๊ฒ ๊ฐ์์ต๋๋ค.
(chrome://flags๋ฅผ ์ฌ์ฉํด๋ ๋์์ด ๋์ง ์์๊ณ ๋ชจ๋ ํ์ฅ ํ๋ก๊ทธ๋จ์ ์ ๊ฑฐํด๋ ์๋ฌด ์์ฉ์ด ์์์ต๋๋ค).
์ด๋ฌํ ์ ํ์ ๋ฌธ์ ๋ ์ ์ฌํ ํ๊ฒฝ์์ ๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ ํฅํ ์ฌ์ฉ์์๊ฒ ๋งค์ฐ ์ ์ฉํฉ๋๋ค. ์์ธํ ์๋ ค์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
์ข์ ์ฌ๊ฐ๋ด ์ํด 100% ๋ด ํฌ๋กฌ ์ค์น ์๊ณ ๋ฒ ํ ์ฑ๋๋ก ์ ํํ๋ฉด ํด๊ฒฐ๋๋ ๊ฒ ๊ฐ์์ต๋๋ค.
(chrome://flags๋ฅผ ์ฌ์ฉํด๋ ๋์์ด ๋์ง ์์๊ณ ๋ชจ๋ ํ์ฅ ํ๋ก๊ทธ๋จ์ ์ ๊ฑฐํด๋ ์๋ฌด ์์ฉ์ด ์์์ต๋๋ค).
์ด๊ฒ์ด ๋์๊ฒ๋ ํจ๊ณผ๊ฐ ์์์ ํ์ธํ ์ ์์ต๋๋ค. ํฌ๋กฌ ๋ฒ ํ๋ฅผ ์ค์นํ๋ฉด ์ฑ์ด ์ ์์ ์ผ๋ก ์คํ๋์์ต๋๋ค. ๊ฐ์ฌ ํด์.
๋ฌด์์ ๋ฐ๊ฒฌ: ํฌ๋กฌ ๋ฒ ํ์ ์๋ชป์ด ์๋๋๋ค.
์ด๋ค ์ด์ ๋ก ๋ด ํ๋์จ์ด ๊ฐ์์ด ๋นํ์ฑํ๋์์ต๋๋ค.
ํ๋์จ์ด ๊ฐ์์ ํ์ฑํํ๋ฉด ํด๊ฒฐ๋์์ต๋๋ค.
Chrome -> ์ค์ (โ,) -> ๊ณ ๊ธ -> ์์คํ -> ์ฒซ ๋ฒ์งธ ํ์ฑํ
@ivanpopelyshev WebGL์์ ๋ง์คํน์ ์ํ ๋์ฒด ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ฌ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๊น? ์ด stackoverflow ์ค๋ ๋ ์ ๋ํ ์ค๋ช ๊ณผ ํจ๊ป ๋ช ๊ฐ์ง ์ต์ ์ด ๋ ์์ต๋๋ค.
์๋์ผ๋ก ํ์ฑํํ๋ฉด ์ฌ์ฉ์์๊ฒ ๋์์ด ๋์ง ์๋๋ค๊ณ ์๊ฐํฉ๋๋ค. ์๋ ์ฝ๋๊ฐ ์ ์๊ฒ ํจ๊ณผ์ ์ด์์ต๋๋ค!
import * as PIXI from 'pixi.js-legacy'
ํ๋์จ์ด ๊ฐ์ ์ค์ ์ด ๋นํ์ฑํ๋์ด ์๊ธฐ ๋๋ฌธ์ Chrome์ ์ฌ์ฉํ ๋๋ ์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์๊ธฐ ๋๋ฌธ์ ์ผ๋ง ์ ์ ๋นํ์ฑํํ์ ๊ฒ์ ๋๋ค.
๊ทธ๋ฌ๋ ์ด ๊ฒฝ์ฐ์ Pixi๊ฐ ๋ก๋๋์ง ์๋ ์ด์ ๊ฐ ๊ถ๊ธํฉ๋๋ค. HTML 5 ์บ๋ฒ์ค๋ก ๋์๊ฐ์ผ ํ์ง ์๊ธฐ ๋๋ฌธ์ ๋๊น?
@immanuelx2 ์คํฌ๋ฆฐ์ท์ ๊ฒ์ํ ๋ฌธ์๊ฐ ์ต์ ์ํ๊ฐ ์๋๋๋ค. ์บ๋ฒ์ค ํด๋ฐฑ์ด v5.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 4GB, Intel UHD ๊ทธ๋ํฝ 630 1536MB
๊ทธ๋์ @winterNebs ์ ๋น์ทํ ๋ฌธ์ ๊ฐ ์์ง๋ง ์ ์๊ฒ Chrome์ > 5.0.0-rc.2 ๋ฒ์ ์์ ๊ด์ฐฎ์ ๊ฒ ๊ฐ๊ณ ํ์ด์ดํญ์ค๋ webgl์ด ์ง์๋์ง ์๋๋ค๊ณ ์๋ ค์ค๋๋ค.
๋ค๋ฅธ ์ฌ๋์๊ฒ ์ด ๋ฌธ์ ๊ฐ ์๋ ๊ฒฝ์ฐ. " ์ํํธ์จ์ด ๋ ๋๋ง ๋ชฉ๋ก ๋ฌด์ " chrome://flags ํ๋๊ทธ ๋ฅผ ์๋์ผ๋ก ํ์ฑํํด์ผ ํ์ต๋๋ค
์ธ๋ถ ์ฌํญ:
ํฌ๋กฌ: 78.0.3904.97
OSX: 10.13.6
๊ฐ์ฌํฉ๋๋ค @goodgecko - ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ฌ์ ํ ์์ ์ด ํ์ํ์ง๋ง; ์ต์ข ์ฌ์ฉ์์๊ฒ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ํด๋น ๋จ๊ณ๋ฅผ ์ํํ๋๋ก ์์ฒญํ๋ ๊ฒ์ ํฉ๋ฆฌ์ ์ด๊ฑฐ๋ ์คํ ๊ฐ๋ฅํ์ง ์์ต๋๋ค. ์๋ ๋์ฒด๋ ์์ ์ ์ด์ด์ผ ํฉ๋๋ค.
Chromium 79.0.3945.88์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ Brave Browser 1.1.23์ Linux์ Windows ๋ชจ๋์์ ์ด ์ ํํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
ํฅ๋ฏธ๋ก์ด ์ ์ ๋์ผํ Chromium ๋น๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ์ผ๋ฐ์ ์ธ Chrome์ด ์๋ฒฝํ๊ฒ ์๋ํ๋ค๋ ๊ฒ์
๋๋ค.
Firefox 71.0์ ์๋ฌด ๋ฌธ์ ์์ด ๊ด์ฐฎ์ต๋๋ค.
@goodgecko ํ์ด ๋์์ด๋์ง ์์์ต๋๋ค
Chrome ์ค์ ํ๋์จ์ด ๊ฐ์(๊ณ ๊ธ) ์ํ๋ฅผ ํ์ธํ์๊ฒ ์ต๋๊น? ํฌ๋กฌ์์ ์ด ์ต์
์ ๋ซ์ ๋๋ ๊ฐ์ ๋ฌธ์ ๊ฐ ๋ํ๋ฌ์ต๋๋ค.
๋์์ด ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
Chrome ์ค์ ํ๋์จ์ด ๊ฐ์(๊ณ ๊ธ) ์ํ๋ฅผ ํ์ธํ์๊ฒ ์ต๋๊น? ํฌ๋กฌ์์ ์ด ์ต์ ์ ๋ซ์ ๋๋ ๊ฐ์ ๋ฌธ์ ๊ฐ ๋ํ๋ฌ์ต๋๋ค.
๋์์ด ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์ด๊ฒ์ ๋๋ฅผ ์ํด ์ผํ์ต๋๋ค. ํ๋์จ์ด ๊ฐ์์ ์ผ์ผ ํ์ต๋๋ค.
๋์๊ฒ๋ ๋ ์ด์ํ๋ค. https://get.webgl.org/ ๊ฐ ์๋ ์ค์ ๋๋ค. PIXI v5 ์์ ๋ ๋ง์คํฌ๊ฐ ์๋ ๊ฒฝ์ฐ์๋ ์ ์๋ํฉ๋๋ค.
ํ์ง๋ง ๊ฒ์์ ์ด๋ ค๊ณ ํ๋ฉด WebGL์ด ์ง์๋์ง ์๋๋ค๊ณ ๋์ต๋๋ค.
๋ค๋ฅธ ์ฌ๋์๊ฒ ์ด ๋ฌธ์ ๊ฐ ์๋ ๊ฒฝ์ฐ. " ์ํํธ์จ์ด ๋ ๋๋ง ๋ชฉ๋ก ๋ฌด์ " chrome://flags ํ๋๊ทธ ๋ฅผ ์๋์ผ๋ก ํ์ฑํํด์ผ ํ์ต๋๋ค
์ธ๋ถ ์ฌํญ:
ํฌ๋กฌ: 78.0.3904.97
OSX: 10.13.6
์ด๊ฒ์ ๋๋ฅผ ์ํด ์ผํ์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค!
์คํ ์์ค X.Org X Server Nouveau ๋๋ผ์ด๋ฒ๋ฅผ ์ฌ์ฉํ๋ Chrome ์์ 80.0.+, Ubuntu 18.04์์ ๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค. ๋๋ WebGL ํ ์คํธ๋ฅผ ํต๊ณผํ๊ณ ๊ทธ๊ฒ์ด ๋๋ผ์ด๋ฒ์ฌ์ผ ํ๋ค๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์ ๋ ์ ๋๋ผ์ด๋ฒ(Nvidia)๋ฅผ ์ค์นํ ํ ๋ชจ๋ ๊ฒ์ด ์ด์ ์ ์๋ํฉ๋๋ค.
๋ฌด์์ ๋ฐ๊ฒฌ: ํฌ๋กฌ ๋ฒ ํ์ ์๋ชป์ด ์๋๋๋ค.
์ด๋ค ์ด์ ๋ก ๋ด ํ๋์จ์ด ๊ฐ์์ด ๋นํ์ฑํ๋์์ต๋๋ค.
์ฌ๊ธฐ๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค. ํ๋์จ์ด ๊ฐ์์ ๋นํ์ฑํํ์ต๋๋ค. ์ด์ ์ OBS์์ ๋ธ๋ผ์ฐ์ ๋ฅผ ๊ธฐ๋กํ๊ธฐ ์ํด ๋นํ์ฑํํ์ต๋๋ค.
Chrome 83๊ณผ ๋์ผํ ๋ฌธ์ | ๋ง์ฝ์ค 10.13.6 | ์๋น๋์ ์งํฌ์ค 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 ์์ ๋ ํฌ๋กฌ์ด Canvas๋ก ๋๋์๊ฐ๋ ์์ธ์ผ๋ก ์ ์๋ํฉ๋๋ค. ์น ์ฝ์์ ์ด๊ณ ํ์ธํ์ญ์์ค.
๊ทธ๊ฒ์ ๋๋ฅผ ์ํด ์ผํ์ต๋๋ค!
์ด ์ค๋ ๋๋ฅผ ์ ๊ธ ์ ์์ต๋๊น? ์ฌ๊ธฐ์ ๋ ์ด์ ๊ธฐ์ฌํ ๊ฒ์ด ์์ต๋๋ค. ๋ฌธ์ ๋ hw ๊ฐ์์ด์์ต๋๋ค.
์ฌ์ ํ ๋ฌธ์ ๊ฐ ์๋ ๊ฒฝ์ฐ ๋ค๋ฅธ ๋ฌธ์ ์ด๋ฏ๋ก ์ด ์ค๋ ๋๋ฅผ necroingํ๋ ๋์ ์ ์ค๋ ๋๋ฅผ ์ด์ด์ผ ํฉ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
ํ๋์จ์ด ๊ฐ์์ ํ์ฑํํ๋ฉด ํด๊ฒฐ๋์์ต๋๋ค.
Chrome -> ์ค์ (โ,) -> ๊ณ ๊ธ -> ์์คํ -> ์ฒซ ๋ฒ์งธ ํ์ฑํ