Pixi.js: ๋ง๋ง‰ ์ง€์›

์— ๋งŒ๋“  2014๋…„ 03์›” 02์ผ  ยท  66์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: pixijs/pixi.js

๋ ˆํ‹ฐ๋‚˜ ๋””์Šคํ”Œ๋ ˆ์ด์—์„œ PIXI๋กœ ๊ทธ๋ฆฐ ๋„ํ˜•์€ ํ๋ฆฟํ•˜๊ฒŒ ๋ณด์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์— ๋Œ€ํ•œ ํฌ๋Ÿผ ๊ฒŒ์‹œ๋ฌผ์„ ๋งŒ๋“ค๋ ค๊ณ  ํ–ˆ์ง€๋งŒ ์ •๋ง ์•„๋ฌด๋ฐ๋„ ๊ฐ€์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์„ ๋” ์ž์„ธํžˆ ์กฐ์‚ฌํ•˜๊ณ  ๋ฌธ์ œ๋ฅผ ๋” ์ž˜ ์„ค๋ช…ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋„๋ก ์ผ๋ฐ˜ ์บ”๋ฒ„์Šค์™€ PIXI์˜ ๋ช‡ ๊ฐ€์ง€ ์˜ˆ๋ฅผ ๋‚˜๋ž€ํžˆ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ ๋ฐ”์ด์˜ฌ๋ฆฐ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์Šคํฌ๋ฆฐ์ƒท

PIXI ์บ”๋ฒ„์Šค ์ปจํ…์ŠคํŠธ๋ฅผ ํ™•์žฅํ•˜๋ ค๋Š” ์‹œ๋„์—์„œ ์ด์ƒํ•œ ๊ฒ€์ •์ƒ‰ ๋ฐฐ๊ฒฝ์ด ์žˆ๋Š” ๊ฑฐ๋ž˜๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค... ์ž˜๋ชป ์ˆ˜ํ–‰ํ–ˆ๊ฑฐ๋‚˜ ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๋‹ค๋ฅธ ๊ฒƒ์ด ๋ฐฉํ•ด๊ฐ€ ๋˜๊ฑฐ๋‚˜ ์ปจํ…์ŠคํŠธ ์ˆ˜์ •.

PIXI๊ฐ€ devicePixelRatio ๋ฅผ ํ™•์ธํ•œ ๋‹ค์Œ ๊ทธ์— ๋”ฐ๋ผ ์บ”๋ฒ„์Šค + ์ปจํ…์ŠคํŠธ ์†์„ฑ์„ ์กฐ์ •ํ•˜์—ฌ ๋‚ด์žฅ๋œ ๋ง๋ง‰ ์ง€์›์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ, ๋‹ค๋ฅธ ์˜๋ฏธ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์บ”๋ฒ„์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‚˜๋ฅผ ์œ„ํ•ด ์ผํ•œ CSS ๋ฐฉ๋ฒ•(pixi.js ์ œ์™ธ)
canvas { image-rendering: optimizeSpeed; image-rendering: -moz-crisp-edges; image-rendering: -o-crisp-edges; image-rendering: -webkit-optimize-contrast; image-rendering: optimize-contrast; image-rendering: crisp-edges; image-rendering: pixelated; -ms-interpolation-mode: nearest-neighbor; }
์ด๊ฒƒ์ด ๋ˆ„๊ตฐ๊ฐ€๋ฅผ ๋„์šธ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•˜์—ฌ.

๋ชจ๋“  66 ๋Œ“๊ธ€

์ด ๋ฒ„๊ทธ์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์ฐธ๊ณ ๋กœ ์ด๊ฒƒ์ด ์ผ๋ฐ˜์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. http://www.html5rocks.com/en/tutorials/canvas/hidpi/

์ด๊ฒƒ์€ ๋˜ํ•œ ํ…์ŠคํŠธ์˜ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

devicePixelRatio๊ฐ€ 2์ธ ๋ง๋ง‰ ํ™”๋ฉด์ด ์žˆ๊ณ  ์„ ๋ช…ํ•œ 400x300 ์บ”๋ฒ„์Šค๋ฅผ ์›ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์–ป์œผ๋ ค๋ฉด ์›ํ•˜๋Š” ์บ”๋ฒ„์Šค ํฌ๊ธฐ์— devicePixelRatio(800x600)๋ฅผ ๊ณฑํ•œ PIXI ๋ Œ๋”๋Ÿฌ๋ฅผ ์ดˆ๊ธฐํ™”ํ•œ ๋‹ค์Œ CSS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜๋™์œผ๋กœ ์บ”๋ฒ„์Šค๋ฅผ 400x300์œผ๋กœ ์ถ•์†Œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฌผ๋ก  ์œ„์น˜, ๊ธ€๊ผด ํฌ๊ธฐ, ์„  ๋„ˆ๋น„, ๋กœ๋“œ๋œ ์ž์‚ฐ ๋“ฑ ๋ชจ๋“  ๊ณ„์‚ฐ์— ์ด ํฌ๊ธฐ ์กฐ์ •์„ ํ†ตํ•ฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

var canvas = document.getElementById('game'),
    scale = window.devicePixelRatio,
    width = 400,
    height = 300,
    renderer = PIXI.autoDetectRenderer(width * scale, height * scale, canvas);
canvas.style.width = width + 'px';
canvas.style.height = height + 'px';

+1

์ด ๋ฌธ์ œ๋ฅผ ๊ณง ํ•ด๊ฒฐํ•  ๊ณ„ํš์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๋ชจ๋“  ํฌ๊ธฐ, ์œ„์น˜, ๊ธ€๊ผด ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์€ ์ •๋ง ๊ณ ํ†ต์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ํ‘œ์ค€ ์บ”๋ฒ„์Šค๋กœ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋งค์šฐ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์ด ์žˆ๋Š” ๊ฒฝ์šฐ.

์Šคํ”„๋ผ์ดํŠธ๊ฐ€ hidpi์ธ์ง€ ์•„๋‹Œ์ง€์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํฌ๊ธฐ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์˜ ์Šคํ”„๋ผ์ดํŠธ๊ฐ€ hidpi๋ฅผ ์œ„ํ•ด ํ™•์žฅ๋˜์–ด์•ผ ํ•˜๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ์–ธ์ œ ํ™•์žฅ๋ ์ง€ ๋ชจ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ userland์— ๋ณด๊ด€ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‹น์‹ ์€ ํ• .

์•ˆ๋…•ํ•˜์„ธ์š” @englercj ์ž…๋‹ˆ๋‹ค. ์Šคํ”„๋ผ์ดํŠธ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๋“œํ•œ ์ž์‚ฐ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๊นŒ?

@dcascais ๋„ค

@englercj ๋‹ต๋ณ€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

ํ˜„์žฌ ๋ Œ๋”๋Ÿฌ ๋ณด๊ธฐ๊ฐ€ ์ ์ ˆํ•œ ๋””์Šคํ”Œ๋ ˆ์ด ํ•ด์ƒ๋„๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด CSS ํŠธ๋ฆญ(์ด์ „ ๋งํฌ์—์„œ ์„ค๋ช…)์œผ๋กœ ํฌ๊ธฐ๊ฐ€ ์กฐ์ •๋œ ๊ฒฝ์šฐ ์Šคํ…Œ์ด์ง€์— ์ถ”๊ฐ€๋œ ๋‹ค์Œ ํฌ๊ธฐ๊ฐ€ ์กฐ์ •๋œ ๋ Œ๋”๋Ÿฌ ๋ณด๊ธฐ๋กœ ๋ Œ๋”๋ง๋˜๋Š” ๋ชจ๋“  ํ•ญ๋ชฉ์€ ๊ทธ์— ๋”ฐ๋ผ ํฌ๊ธฐ๊ฐ€ ์กฐ์ •๋˜์ง€ ์•Š๊ณ  ํ”ฝ์…€์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ’์ด๋ฏ€๋กœ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ ˆ๋ฐ˜ ํฌ๊ธฐ์ž…๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—๋Š” ๊ทธ๋ž˜ํ”ฝ ์ปจํ…์ŠคํŠธ, ํ…์ŠคํŠธ ๋ฐ ๋กœ๋“œ๋œ ์ž์‚ฐ์—์„œ ๋™์ ์œผ๋กœ ๋ Œ๋”๋ง๋˜๋Š” ์ฝ˜ํ…์ธ ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ํ”Œ๋žซํผ์—์„œ๋Š” ๋‹ค์–‘ํ•œ ํ™”๋ฉด ๋ฐ€๋„์— ๋Œ€ํ•ด ์ ์ ˆํ•œ ์ž์‚ฐ์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ์‚ฌ์šฉ์ž์˜ ์ฑ…์ž„์ด๋ผ๊ณ  ๊ฐ€์ •ํ•˜์ง€๋งŒ ๋‚ด๋ถ€๋Š” ๋Œ€์ƒ์œผ๋กœ ์‚ผ๊ณ  ์‹ถ์€ ๋””์Šคํ”Œ๋ ˆ์ด ๋ฐ€๋„๋ฅผ ์‰ฝ๊ฒŒ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ๋Š” ์ถ•์ฒ™ ๊ณ„์ˆ˜ ์†์„ฑ์ด ์žˆ์–ด ์›ํ™œํ•˜๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด Pixi ์‚ฌ์šฉ์ž์—๊ฒŒ ๋” ๊ฐ„๋‹จํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์ธ์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ์ ์ ˆํ•œ ์ž์‚ฐ์— ๋Œ€ํ•ด์„œ๋งŒ ๊ฑฑ์ •ํ•˜๊ฒŒ ํ•˜๊ณ  ์ถ•์ฒ™ ๋น„์œจ์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์„ค์ •๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

์Šคํ…Œ์ด์ง€์— ์ถ”๊ฐ€๋œ ์ฝ˜ํ…์ธ ์˜ ์˜ˆ์ƒ ํฌ๊ธฐ๋ฅผ ๋‹ฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ œ์•ˆ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

ํ‘œ์‹œ ๋ชฉ๋ก์— ์žˆ๋Š” ๋ชจ๋“  ํ•ญ๋ชฉ์˜ x, y, ๋„ˆ๋น„ ๋ฐ ๋†’์ด ๊ฐ’์„ ์ˆ˜๋™์œผ๋กœ ์กฐ์ •ํ•˜๊ณ  ํ…์ŠคํŠธ์˜ ๊ฒฝ์šฐ ์ ์ ˆํ•œ ํฌ๊ธฐ์˜ ๊ธ€๊ผด ์ด๋ฆ„์„ ๊ฐ€์ง„ ๋‹ค๋ฅธ ๋ฌธ์ž์—ด์„ ์ •์˜ํ•˜๋ฉด ๋งค์šฐ ๋ฒˆ๊ฑฐ๋กญ๊ณ  ๋ฒ„๊ทธ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ.

๊ฐ์‚ฌ ํ•ด์š”.

ํฅ๋ฏธ๋กญ๊ฒŒ๋„ ์ด๋Ÿฌํ•œ ์‹œ์Šคํ…œ ์ค‘ ์ผ๋ถ€๊ฐ€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ฐ ํ•ญ๋ชฉ์„ ๊ฐœ๋ณ„์ ์œผ๋กœ ํ™•์žฅํ•˜๋Š” ํ•œ, ๊ทธ๊ฒƒ์€ ๊ฐˆ ๊ธธ์ด ์•„๋‹Œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์žฅ๋ฉด ๊ทธ๋ž˜ํ”„์ด๋ฏ€๋กœ ๋ฃจํŠธ DOC๋ฅผ ์ ์ ˆํ•˜๊ฒŒ ํ™•์žฅํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๊นŒ?

@englercj , ๋‚˜๋Š” ์ด๊ฒƒ์„ ์ƒŒ๋“œ๋ฐ•์Šค์—์„œ ์‹œ๋„ํ–ˆ๊ณ  ์ ์ ˆํ•œ ํฌ๊ธฐ๋กœ ๋‹ค์‹œ ๋ถˆ์–ด๋‚˜๋Š” ๋™์•ˆ ํ”ฝ์…€ํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ํ–‰๋™์„ ๊ธฐ๋Œ€ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

@bmantuano ์„ ํƒํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜(๊ฐ€์žฅ ๊ฐ€๊นŒ์šด, ์„ ํ˜•, ์Œ์‚ผ์ฐจ ๋“ฑ)์œผ๋กœ ํ™•์žฅ๋  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•ฉ๋‹ˆ๋‹ค.

Chad, ์—ฌ๊ธฐ์— ์‘๋‹ตํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์Šค์ผ€์ผ๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๊ด€ํ•ด์„œ๋Š” PIXI.scaleModes๋ฅผ ์ฐธ์กฐํ•ฉ๋‹ˆ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด ์Œ์ž…๋ฐฉ ์˜ต์…˜์ด ์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@englercj ๋‹ค์Œ์€ ๊ณ ํ•ด์ƒ๋„ ๋””์Šคํ”Œ๋ ˆ์ด์—์„œ ์„ ๋ช…ํ•œ ํ…์ŠคํŠธ์™€ ๊ทธ๋ž˜ํ”ฝ(์ž์‚ฐ์ด ์•„๋‹Œ ๋™์ ์œผ๋กœ ๊ทธ๋ ค์ง)์„ ์–ป๊ธฐ ์œ„ํ•ด ์šฐ๋ฆฌ๊ฐ€ ๋ฌด์—‡์„ ํ•˜๋ ค๊ณ  ํ•˜๋Š”์ง€ ๋ณด์—ฌ์ฃผ๋Š” ๋ช‡ ๊ฐ€์ง€ JSFiddle์ž…๋‹ˆ๋‹ค.

์บ”๋ฒ„์Šค ํฌ๊ธฐ ์กฐ์ • ๋ฐ ํฌ๊ธฐ ์กฐ์ •๋œ ๊ธฐ๋ณธ ํ‘œ์‹œ ๊ฐœ์ฒด ์ปจํ…Œ์ด๋„ˆ(ํฌ๊ธฐ๋Š” ์ •ํ™•ํ•˜์ง€๋งŒ ํ๋ฆฟํ•˜๊ณ  ์ผ๋ถ€ ๋ฌธ์ œ ์žˆ์Œ)
http://jsfiddle.net/hsv8Q

์บ”๋ฒ„์Šค ํฌ๊ธฐ ์กฐ์ •(์„ ๋ช…ํ•˜์ง€๋งŒ ์ž˜๋ชป๋œ ํฌ๊ธฐ์™€ ์ผ๋ถ€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Œ)
http://jsfiddle.net/hsv8Q/1

์Šค์ผ€์ผ๋ง ์—†์Œ(ํฌ๊ธฐ๋Š” ์ •ํ™•ํ•˜์ง€๋งŒ ํ๋ฆฟํ•จ)
http://jsfiddle.net/hsv8Q/2

์ด๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ ์˜๋ฏธํ•˜๋Š” ๋ฐ”๋ฅผ ์ดํ•ดํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์‹œ๋„ํ•ด์•ผ ํ•  ๋‹ค๋ฅธ ๊ฒƒ์ด ์žˆ์œผ๋ฉด ์•Œ๋ ค์ฃผ์‹ญ์‹œ์˜ค.

๋ฐ”์ด์˜ฌ๋ฆฐ์„ ์ถ”๊ฐ€ํ•ด ์ฃผ์‹  @dcascais ์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. @englercj , ์ฒซ ๋ฒˆ์งธ ๊ฒƒ์€ ๋‹น์‹ ์ด ์ œ์•ˆํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋งž์Šต๋‹ˆ๊นŒ? ๊ฑฐ๊ธฐ์— ๋†’์€ DPI ์žฅ์น˜์—์„œ ํ”ฝ์…€ ํ™”๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@bmantuano ๋ถˆํ–‰ํžˆ๋„ ํ…Œ์ŠคํŠธํ•  HDPI ์žฅ์น˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค :( @GoodBoyDigital ๋˜๋Š” @photonstorm ์ด ๋ณผ ์ˆ˜ ์žˆ๋„๋ก ์ด ์žฅ์น˜๋ฅผ ๋‚จ๊ฒจ๋‘๊ฒ ์Šต๋‹ˆ๋‹ค.

@englercj , ์ง€๊ธˆ๊นŒ์ง€ @arahlf ๋ฐ @n1313 , ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ฐพ์•˜์Šต๋‹ˆ๊นŒ?

์•„๋‹ˆ, ์•„์ง :(

@bmantuano , ๋‚˜๋Š” ์—ฌ์ „ํžˆ ์ด์ „ ์˜๊ฒฌ์— ์„ค๋ช…๋œ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์•„๋ฌด๋Ÿฐ ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์ด์— ๋Œ€ํ•œ ์›€์ง์ž„์ด ์žˆ์—ˆ์Šต๋‹ˆ๊นŒ? ์–ธ๊ธ‰ํ•œ @n1313 ํฌ๊ธฐ ์กฐ์ • ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ–ˆ์ง€๋งŒ ๋ ˆํ‹ฐ๋‚˜ ์žฅ์น˜์—์„œ FPS๋ฅผ ํŒŒ๊ดดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์–ด๋–ค ์•„์ด๋””์–ด?

@arahlf ๋ฐ @n1313 , thx ๋‹ต์žฅ.

@GoodBoyDigital , ์ด๊ฒƒ์ด ๋ ˆ์ด๋”์— ์žˆ์Šต๋‹ˆ๊นŒ? ํ–ฅํ›„ ์—…๋ฐ์ดํŠธ์—์„œ ์˜ˆ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ธ์ง€ ๋˜๋Š” ์ด๋ฅผ ํ•ดํ‚นํ•ด์•ผ ํ•˜๋Š”์ง€ ์—ฌ๋ถ€์— ๋Œ€ํ•œ ์•„์ด๋””์–ด๋ฅผ ์–ป๋Š” ๋ฐ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@GoodBoyDigital ์—ฌ๊ธฐ์— ๋‚ด ๋ชฉ์†Œ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” Pixi.js๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋Œ€๊ทœ๋ชจ ๋ฉ€ํ‹ฐํ”Œ๋ ˆ์ด์–ด ์˜จ๋ผ์ธ ๊ฒŒ์ž„์„ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์šฐ๋ฆฌ๊ฐ€ Pixi.js๋ฅผ ๊ฐ€์žฅ ์„ฑ๋Šฅ์ด ์ข‹์€ ๋ Œ๋”๋ง ์—”์ง„์œผ๋กœ ์‹๋ณ„ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ ˆํ‹ฐ๋‚˜ ์ง€์›์„ ์ถ”๊ฐ€ํ•˜๋Š” ์ค‘์ž…๋‹ˆ๋‹ค. :) ์ด ๊ณต๊ฐ„์„ ์ง€์ผœ๋ณด์„ธ์š”.

์ตœ๊ณ :+1:

@GoodBoyDigital , ํ™˜์ƒ์ ์ž…๋‹ˆ๋‹ค! ์—…๋ฐ์ดํŠธํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋Œ€๋ฉ๋‹ˆ๋‹ค.

@GoodBoyDigital ๋ฉ‹์ง€๋„ค์š”! ๋„ˆ๋ฌด ๋นจ๋ฆฌ ๋Œ์•„์™€ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋งํ•˜๊ธฐ ์–ด๋ ต๋‹ค๋Š” ๊ฒƒ์„ ์••๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ Pixi์— ๋Œ€ํ•œ ๋ง๋ง‰ ์ง€์›์ด ์™„๋ฃŒ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋Š” ์‹œ๊ธฐ์— ๋Œ€ํ•ด ๋งค์šฐ ๋Š์Šจํ•œ ์˜ˆ์ƒ์„ ์ €์—๊ฒŒ ์•Œ๋ ค์ฃผ์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๊ทธ ๊ธฐ๊ฐ„ ๋‚ด์— ์™„๋ฃŒ๋˜์ง€ ์•Š์œผ๋ฉด ๊ฒฌ์ ์„ ๊ธฐ๋‹ค๋ฆฌ๊ฑฐ๋‚˜ ๋ถˆํ‰ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์šฐ๋ฆฌ๊ฐ€ ์–ผ๋งˆ๋‚˜ ์˜ค๋ž˜ ๊ธฐ๋‹ค๋ฆด ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค!

์•ˆ๋…•ํ•˜์„ธ์š”, ์ƒˆ๋กœ์šด "dev-retina" ๋ธŒ๋žœ์น˜๋ฅผ git ํ—ˆ๋ธŒ์— ์—…๋กœ๋“œํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋‘๊ฐ€ ์—ฐ๊ทน์„ ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์—์ด์Šค๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฑฐ๊ธฐ์—๋Š” ์›€์ง์ด๋Š” ๋ถ€๋ถ„์ด ๋งŽ์ด ์žˆ์œผ๋ฏ€๋กœ dev ๋ถ„๊ธฐ์— ๋ณ‘ํ•ฉํ•˜๊ธฐ ์ „์— ์‹ค์ œ ํ”„๋กœ์ ํŠธ๋กœ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ ๋ Œ๋”๋Ÿฌ์— ์˜ต์…˜ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๋Š” ํ•ด์ƒ๋„์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ Œ๋”๋Ÿฌ๋ฅผ ๋ง๋ง‰์œผ๋กœ ์„ค์ •ํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ Œ๋”๋Ÿฌ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

PIXI.autodetectRenderer(100, 100, {resolution:2})

๋ชจ๋“  ๊ฒƒ์ด ๋™์ผํ•˜๊ฒŒ ๋ณด์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ•ด์ƒ๋„๋Š” ๋” ๋†’์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค :)

BaseTextures์—๋„ ์ด์ œ ํ•ด์ƒ๋„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€๊ฐ€ ๊ณ ํ•ด์ƒ๋„์ธ ๊ฒฝ์šฐ ํ•ด์ƒ๋„๋ฅผ 2๋กœ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋กœ๋“œ ์‹œ ํ•ด์ƒ๋„๋ฅผ ์ž๋™์œผ๋กœ 2๋กœ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์ด๋ฏธ์ง€ ์ด๋ฆ„์— @2x ๊ฐ€ ์žˆ๋Š” ์ด๋ฏธ์ง€๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ [email protected] ๋ฅผ ๋กœ๋“œํ•˜๋ฉด pixi๋Š” ํ•ด์ƒ๋„๊ฐ€ 2๋ผ๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

์ •๋ง ์—ฐ๊ทน์„ ํ•˜๋Š” ๊ฒƒ์ด ์ตœ๊ณ ! ํ•˜์ง€๋งŒ ์ด๊ฒƒ์ด ์ƒ๊ฐ๋ณด๋‹ค ๊ฐ„๋‹จํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์งˆ๋ฌธํ•ด ์ฃผ์„ธ์š”. :)

+1

ํ—ค์ด ๋งท. ์ด๊ฒƒ์€ ์ข‹์•„ ๋ณด์ธ๋‹ค! ๋‚˜๋Š” Canvas๊ฐ€ ๋ฉ‹์ง€๊ณ  ์„ ๋ช…ํ•œ ํ…์ŠคํŠธ์™€ ์ž์‚ฐ์„ ๋ Œ๋”๋งํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ํฌ๊ธฐ์™€ ์œ„์น˜๋Š” ๋‚ด๊ฐ€ ํ…Œ์ŠคํŠธํ•œ ํ•œ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ฒ˜๋ฆฌ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์€ ์œ ์ผํ•œ ๋ฌธ์ œ๋Š” Pixi.Graphics ๊ทธ๋ฆฌ๊ธฐ ์ ˆ์ฐจ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ๋“ค์„ ์„ ๋ช…ํ•˜๊ฒŒ ๋ Œ๋”๋ง ํ•  ์ˆ˜์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ Œ๋”๋ง์˜ ํฌ๊ธฐ์™€ ์œ„์น˜๋Š” ์ •ํ™•ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜ํ”ฝ ๊ฐœ์ฒด๋„ ๋ง๋ง‰์ด์–ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ๋น„ํŠธ๋งต์œผ๋กœ ์บ์‹ฑํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?
์šฐ์—ฐํžˆ ๊ทธ๋ž˜ํ”ฝ ๊ฐœ์ฒด? ์•„๋‹ˆ๋ฉด ๋ฐ”๋กœ PIXI.graphics์ž…๋‹ˆ๊นŒ?

2014๋…„ 9์›” 9์ผ ํ™”์š”์ผ ์˜คํ›„ 5์‹œ 32๋ถ„์— dcascais [email protected]์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

ํ—ค์ด ๋งท. ์ด๊ฒƒ์€ ์ข‹์•„ ๋ณด์ธ๋‹ค! Canvas๋ฅผ ๋ฉ‹์ง€๊ฒŒ ๋ Œ๋”๋งํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
์„ ๋ช…ํ•œ ํ…์ŠคํŠธ์™€ ์ž์‚ฐ. ํฌ๊ธฐ์™€ ์œ„์น˜๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ฒ˜๋ฆฌ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
๋‚ด๊ฐ€ ํ…Œ์ŠคํŠธ ํ•œ ํ•œ.

๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์€ ์œ ์ผํ•œ ๋ฌธ์ œ๋Š” Pixi์ž…๋‹ˆ๋‹ค.๊ทธ๋ž˜ํ”ฝ
๊ทธ๋ฆฌ๊ธฐ ์ ˆ์ฐจ. ๋‚˜๋Š” ๊ทธ๊ฒƒ๋“ค์„ ์„ ๋ช…ํ•˜๊ฒŒ ๋ Œ๋”๋ง ํ•  ์ˆ˜์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. NS
๊ทธ๋Ÿฌ๋‚˜ ๋ Œ๋”๋ง์˜ ํฌ๊ธฐ์™€ ์œ„์น˜๋Š” ์ •ํ™•ํ•ฉ๋‹ˆ๋‹ค.

โ€”
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/GoodBoyDigital/pixi.js/issues/621#issuecomment -54997804
.

๋งคํŠธ ๊ทธ๋กœ๋ธŒ

_๊ธฐ์ˆ  ํŒŒํŠธ๋„ˆ_

์ „ํ™”: 07708 114496 :: www.goodboydigital.com
First Floor, Unit 9B, Queens Yard, White Post Lane, London, E9 5EN
๊ตฟ๋ณด์ดยฉ. ํŒ๊ถŒ ์†Œ์œ .

@GoodBoyDigital ๋ฌธ์ œ๋ฅผ ์„ค๋ช…ํ•  ๋•Œ ๋‚ด๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ตฌ์„ฑ์˜ ์ผ๋ถ€๋ฅผ ๋†“์ณค์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์„ค์ •์€ PIXI.Graphics ๊ฐœ์ฒด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ํ…์Šค์ฒ˜๊ฐ€ ์žˆ๋Š” PIXI.Sprite์ž…๋‹ˆ๋‹ค.

๋ฌธ์ œ์™€ ๊ฒฐ๊ณผ ๋ Œ๋”๋ง์„ ์„ค๋ช…ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋„๋ก JSFiddle์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.
์ด๊ฒƒ์€ PIXI.Sprite๊ฐ€ PIXI.Graphics์— ๊ธฐ๋ฐ˜ํ•œ ํ…์Šค์ฒ˜๋ฅผ ์–ป๋Š” ๊ฒฝ์šฐ ํ๋ฆฟํ•œ ๊ทธ๋ž˜ํ”ฝ ์ถœ๋ ฅ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.
http://jsfiddle.net/hsv8Q/13/

PIXI.Graphics๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•˜๋Š” ์ด ์„ค์ •์€ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
http://jsfiddle.net/hsv8Q/7/

์žก์•˜๋‹ค! ๊ฑฑ์ •ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ์›์ธ์ด ๋ฌด์—‡์ธ์ง€ ์ •ํ™•ํžˆ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. :)
์กฐ์ •๋˜๋ฉด ์•Œ๋ ค๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๊ณ ๋งˆ์›Œ!

@GoodBoyDigital๋‹˜ , ๋ ˆํ‹ฐ๋‚˜ ์ง€์›์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ์šฐ๋ฆฌ ๊ณ ๊ฐ์—๊ฒŒ ํ•„์š”ํ•œ ๋งŒํผ ์ข‹์€ ์‹œ๊ธฐ์— ์˜ต๋‹ˆ๋‹ค. :)

๋ ˆํ‹ฐ๋‚˜ ๋ธŒ๋žœ์น˜์—์„œ ๋ฐœ๊ฒฌํ•œ ํ•œ ๊ฐ€์ง€ ๋ฌธ์ œ: ๋ Œ๋”๋ง์€ ๋” ์ข‹์ง€๋งŒ ํžˆํŠธ ์˜์—ญ์ด ์ž˜๋ชป ์ •๋ ฌ๋ฉ๋‹ˆ๋‹ค. ์บ”๋ฒ„์Šค์˜ ํฌ๊ธฐ๋Š” ์กฐ์ •๋˜์ง€๋งŒ ์ ์ค‘ ์˜์—ญ์€ ์กฐ์ •๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ™”๋ฉด ์ค‘์•™์— ์žˆ๋Š” ๋ฒ„ํŠผ์„ ํ„ฐ์น˜ํ•˜๋ ค๋ฉด ํ™”๋ฉด ์™ผ์ชฝ ์ƒ๋‹จ ์ค‘์•™์„ ํ„ฐ์น˜ํ•ด์•ผ ์‹ค์ œ๋กœ ํ„ฐ์น˜๋ฉ๋‹ˆ๋‹ค.

kaatje_retina_offset
์ด ํ™”๋ฉด์—์„œ ์ค‘์•™์— ์žˆ๋Š” ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ ค๋ฉด ์ฃผํ™ฉ์ƒ‰ ์›(๋‚˜์ค‘์— ์˜ˆ์ œ๋กœ ์ถ”๊ฐ€ํ•จ)์„ ๋ˆŒ๋Ÿฌ์•ผ ์‹ค์ œ๋กœ ๋ˆ„๋ฅด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. hitarea๋Š” ๋‚˜๋จธ์ง€์™€ ํ•จ๊ป˜ ํ™•์žฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

autodetectRenderer ํ•จ์ˆ˜์˜ "ํ•ด์ƒ๋„" ๋งค๊ฐœ๋ณ€์ˆ˜ ์ •๋ณด "window.devicePixelRatio"๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์œ„์—์„œ ์„ค๋ช…ํ•œ ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋น ๋ฅธ/๋”๋Ÿฌ์šด ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” InteractionManager์˜ onTouchStart, onTouchMove ๋ฐ onTouchEnd ๊ธฐ๋Šฅ์— ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ํ•จ์ˆ˜์—์„œ touchData.global.x ๋ฐ touchData.global.y์˜ ๊ณ„์‚ฐ์„ ๋ณ€๊ฒฝํ•˜๊ณ  this.resolution์œผ๋กœ ๋‚˜๋ˆ„์–ด ์ˆ˜์ •ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜๋Š” ๊ฒƒ ๊ฐ™์ง€๋งŒ ํ›จ์”ฌ ๋” ๋‚˜์€ ์†”๋ฃจ์…˜์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” @GillesVermeulen
๋งˆ์ง€๋ง‰ ์ปค๋ฐ‹์—์„œ ํžˆํŠธ ์˜์—ญ ํ•ญ๋ชฉ์„ ์กฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ตœ์‹  ๋ฒ„์ „์œผ๋กœ ์‹œ๋„ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ๊ณ ๋งˆ์›Œ!

@GoodBoyDigital๋‹˜ , ๋น ๋ฅธ ๋‹ต๋ณ€๊ณผ ์ง€์›์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ง์”€ํ•˜์‹  ์ปค๋ฐ‹์ด ์•„์ง Github์— ์—†์„ ์ˆ˜๋„ ์žˆ๋‚˜์š”?

@GillesVermeulen - ์ด์ œ ํ„ฐ์น˜๊ฐ€ ์ข‹์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์šฐ์Šค ์ด๋ฒคํŠธ์— ํ•ด์ƒ๋„ ๋ณ€๊ฒฝ๋งŒ ์ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๋ชจ๋“  ๊ฒƒ์ด ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๋Š”์ง€ ์•Œ๋ ค์ฃผ์„ธ์š”. ๊ฐ์‚ฌ ํ•ด์š”!

์˜คํ›„ @dcascais ! ๋ฐฉ๊ธˆ generateTexture ํ•จ์ˆ˜์˜ ํ•ด์ƒ๋„๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์ˆ˜์ • ์‚ฌํ•ญ์„ ๋ ˆํ‹ฐ๋‚˜ ๋ถ„๊ธฐ์— ํ‘ธ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๋ฉ‹์ง„ ํŒŒ์‚ญ ํŒŒ์‚ญ ํ•œ ๋ง๋ง‰ ์งˆ๊ฐ์„ ์œ„ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

var retinaTexture = myGraphicsObject.generateTexture(2)
var normalTexture = myGraphicsObject.generateTexture(1)
var smallTexture = myGraphicsObject.generateTexture(0.5)

๊ทธ๊ฒƒ์ด ๋‚˜์ค‘์— ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์•Œ๋ ค์ฃผ์‹ญ์‹œ์˜ค. ๊ฐ์‚ฌ ํ•ด์š”!

@GoodBoyDigital ์ข‹์•„์š” ! ์ด๊ฒƒ์€ ์ด์ œ ๊ฝค ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์ธ ์งˆ๋ฌธ์œผ๋กœ. ์ด ๊ณ ํ•ด์ƒ๋„ ์—…๋ฐ์ดํŠธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์„ฑ๋Šฅ, ๋ฉ”๋ชจ๋ฆฌ ๋˜๋Š” ์ถฉ๋Œ ๋ฌธ์ œ์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๊นŒ?

๊ณ ๋งˆ์›Œ์š”, ๋งท.

๋‹คํ–‰!

๊ทธ์—๊ฒŒ ๋งˆ๋ฒ•์˜ ์ด์•Œ์ด ์žˆ์—ˆ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค! ๋ถˆํ–‰ํžˆ๋„ ๋” ๋†’์€ ํ•ด์ƒ๋„๋Š” ๋ณธ์งˆ์ ์œผ๋กœ ๋ชจ๋“  ๊ฒƒ์ด ๋‘ ๋ฐฐ๋กœ ํฌ๊ธฐ ๋•Œ๋ฌธ์— ์„ฑ๋Šฅ๊ณผ ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„์— ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค. Retina ์ด๋ฏธ์ง€๋Š” 2๋ฐฐ ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฐจ์ง€ํ•˜๋ฉฐ webGL/Canvas๋Š” 2๋ฐฐ ๋งŽ์€ ํ”ฝ์…€๋กœ ์žฅ๋ฉด์„ ๋ Œ๋”๋งํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‚ฎ์€ ๋ฉ”๋ชจ๋ฆฌ/cpu ์žฅ์น˜์—์„œ ์ด๊ฒƒ์€ ์ง„์งœ ํ‚ฌ๋Ÿฌ๊ฐ€ ๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ณ ํ•ด์ƒ๋„๋กœ ๋ฌด์—‡์ด๋“  ํ•  ๋•Œ ์—ผ๋‘์— ๋‘๋Š” ๊ฒƒ์ด ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

4๋ฐฐ๋ผ๊ณ  ์ƒ๊ฐ๋˜๋Š”๊ฑฐ ์•„๋‹˜? ๋˜ํ•œ ๋ ˆํ‹ฐ๋‚˜ ๋””์Šคํ”Œ๋ ˆ์ด๋ฅผ ๊ฐ€์ง„ ์‚ฌ๋žŒ๋“ค๋„ ๋น ๋ฅธ ์ปดํ“จํ„ฐ๋ฅผ ๊ฐ–๊ฒŒ ๋  ๊ฒƒ์ด๋ผ๊ณ  ๊ฑฐ์˜ ๋ณด์žฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

@iirelu ์ฐธ์œผ๋กœ! 4๋ฐฐ!
์˜ˆ, ๋ ˆํ‹ฐ๋‚˜ ๋””์Šคํ”Œ๋ ˆ์ด๊ฐ€ ์žˆ๋Š” ์ปดํ“จํ„ฐ๋Š” ์ƒ๋‹นํžˆ ๊ณ ๊ธ‰ํ˜•์ด๋ฏ€๋กœ ๋ฌธ์ œ๊ฐ€ ์—†์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ฉ”๋ชจ๋ฆฌ ๋ฌธ์ œ๋Š” ๋ ˆํ‹ฐ๋‚˜ ์Šคํฌ๋ฆฐ์ด ์žˆ๋Š” ๋ชจ๋ฐ”์ผ ์žฅ์น˜์—์„œ ๋” ๋งŽ์ด ๋‚˜ํƒ€๋‚  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@GoodBoyDigital , ํ„ฐ์น˜ ๊ธฐ๋Šฅ ์—…๋ฐ์ดํŠธ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋‚ด ์ž„์‹œ ์ˆ˜์ •๊ณผ ๋™์ผํ–ˆ๊ณ  ํŠธ๋ฆญ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์„ฑ๋Šฅ: ์ตœ๊ทผ๋ถ€ํ„ฐ IOS7์˜ CocoonJS์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด์™”์Šต๋‹ˆ๋‹ค. Phonegap๊ณผ ๊ฐ™์€ ๊ฒƒ๋“ค์ด ์‚ฌ์šฉํ•˜๋Š” ํ‘œ์ค€ iOS Webview์— ๋น„ํ•ด ์„ฑ๋Šฅ์€ ํ™•์‹คํžˆ ๋” ์ข‹์ง€๋งŒ ๋ชจ์–‘์„ ๊ทธ๋ฆฌ๋Š” ๊ฒƒ์€ ๋งค์šฐ ๋ถ€๋‹ด์ด ๋˜๋Š” ๊ฒƒ ๊ฐ™๊ณ  ๋ชจ์–‘์€ Safari์—์„œ์™€ ๊ฐ™์ด ์•คํ‹ฐ์•จ๋ฆฌ์–ด์‹ฑ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์ด CocoonJS์™€ ๊ด€๋ จ์ด ์žˆ๊ณ  Pixi์™€ ๊ฑฐ์˜ ๊ด€๋ จ์ด ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋ ˆํ‹ฐ๋‚˜(@2x) ํ…์Šค์ฒ˜์— ํ•„ํ„ฐ๋ฅผ ์ ์šฉํ•˜์ž๋งˆ์ž ๋ชจ๋“  ์œ„์น˜ ์ง€์ •์ด ํ•ด์ œ๋œ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค @joaomoreno ! ๊ผญ ์‚ดํŽด๋ณด์„ธ์š” :+1:

๋‹น์‹ ์ด ์ œ์‹œํ•˜๋Š” API์— ๋Œ€ํ•œ ์ž‘์€ ์งˆ๋ฌธ: PIXI.autodetectRenderer(width, height, optionObject) ์™€ PIXI.autodetectRenderer(width, height, view, antialias, transparent ์‚ฌ์ด์— ์ถฉ๋Œ์ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๊นŒ?
src/pixi/utils/Detector.js ์„ค๋ช…๋œ ๋Œ€๋กœ optionObject ์ธ์ˆ˜๋ฅผ ๋‘ ๋ฒˆ์งธ ์„œ๋ช…์˜ ์—ฌ์„ฏ ๋ฒˆ์งธ ์ธ์ˆ˜๋กœ ๋งŒ๋“ค๊นŒ์š”? ์„ธ ๋ฒˆ์งธ ์ธ์ˆ˜๊ฐ€ ์ด๋ฏธ DOMElement์ด๋ฏ€๋กœ ๋‹ค๋ฅธ ์œ„์น˜์— ๋„ฃ์„ ์ˆ˜ ์žˆ๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ฃ ?

pixi์˜ ๋‹ค์Œ ๋ฒ„์ „์€ ์ƒˆ๋กœ์šด ๋ฉ”์„œ๋“œ ์„œ๋ช…์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค.

@englercj ๋น ๋ฅธ ์‘๋‹ต์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์‚ญ์ œ๋œ ์˜ต์…˜์€ ์—ฌ์ „ํžˆ โ€‹โ€‹๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

options ๊ฐ์ฒด๋Š” ์ด์ „์˜ ๋ชจ๋“  ์˜ต์…˜๊ณผ ์ƒˆ๋กœ์šด ์˜ต์…˜์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋Šฅ์ด ์ œ๊ฑฐ๋˜์ง€ ์•Š๊ณ  ์˜ต์…˜์„ ๋‹ค๋ฅด๊ฒŒ ์ „๋‹ฌํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

https://github.com/GoodBoyDigital/pixi.js/blob/dev/src/pixi/utils/Detector.js#L14 -L19

์˜ค, ํŽธ๋ฆฌํ•œ! ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. :+1:

๋ ˆํ‹ฐ๋‚˜ ์ง€์›์€ ํ˜„์žฌ dev ๋ธŒ๋žœ์น˜์— ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ์‚ฌ๋žŒ์ด ์žˆ์œผ๋ฉด ์•Œ๋ ค์ฃผ์„ธ์š”. +1: ์ง€๊ธˆ์€ ๋‹ซ์Šต๋‹ˆ๋‹ค.

๋ ˆํ‹ฐ๋‚˜ ๋งฅ๋ถ ํ”„๋กœ์— ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

{resolution:2} ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์Šคํ…Œ์ด์ง€ ๋„ˆ๋น„๋Š” ์‹ค์ œ ๋ง๋ง‰ ํ”ฝ์…€์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ œ ๊ฒฝ์šฐ์—๋Š” 2540 ํ”ฝ์…€์ž…๋‹ˆ๋‹ค. ํ…์Šค์ฒ˜๋Š” ๋‘ ๋ฐฐ ํฌ๊ธฐ๋กœ ๋ Œ๋”๋ง๋˜๋ฉฐ ๋„ˆ๋น„๋„ ์‹ค์ œ 1:1 ๋ง๋ง‰ ํ”ฝ์…€์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ 300 x 200 ์ด๋ฏธ์ง€๋Š” 600 x 400 ๋ง๋ง‰ ํ”ฝ์…€์„ ์ฐจ์ง€ํ•˜์ง€๋งŒ ๋„ˆ๋น„๋Š” 300์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์˜ˆ์ƒ๋œ ๋™์ž‘์ž…๋‹ˆ๊นŒ?

@PierBover ์˜ˆ, ๊ฐœ์ฒด์˜ ๋†’์ด/๋„ˆ๋น„๋Š” ์‹ค์ œ๋กœ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ํ•ด์ƒ๋„๋กœ ๋ Œ๋”๋ง๋ฉ๋‹ˆ๋‹ค.

@englercj ํ•˜์ง€๋งŒ ์‹ค์ œ ํ”ฝ์…€๊ณผ 2๋ฐฐ ํ”ฝ์…€์ด ํ˜ผํ•ฉ๋œ ์ฐจ์›์ด ์žˆ๋Š”

์–˜๋“ค ์•„, ๋‚ด๊ฐ€ ์—ฌ๊ธฐ์„œ ๋ญ”๊ฐ€ ์ž˜๋ชปํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ๋ ˆํ‹ฐ๋‚˜ ๋””์Šคํ”Œ๋ ˆ์ด์šฉ CanvasRenderer์˜ ํ•ด์ƒ๋„๋ฅผ 2๋กœ ์„ค์ •ํ•˜๋ฉด ์บ”๋ฒ„์Šค ํฌ๊ธฐ๊ฐ€ ๋‘ ๋ฐฐ, @x2 ์ด๋ฏธ์ง€๊ฐ€ ๋„ค ๋ฐฐ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

    <strong i="7">@scale</strong> = window.devicePixelRatio
    width = 960/<strong i="8">@scale</strong>
    height = 556/<strong i="9">@scale</strong>

    renderer = new (PIXI.CanvasRenderer)(width, height,{resolution:@scale})
    container = document.getElementById 'container'
    container.appendChild renderer.view

StackOverflow ์งˆ๋ฌธ
http://stackoverflow.com/questions/29142342/pixi-js-retina-display-canvas-is-doubled-in-size

์ด๋ฒˆ ํ˜ธ์™€ ์ด ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ http://www.goodboydigital.com/pixi-js-v2-fastest-2d-webgl-renderer/ ์—์„œ ๋ง๋ง‰ ์ด๋ฏธ์ง€๋Š” ํ™•์žฅ ์ „์— @2x ๋˜๋Š” @x2 ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๊ณ  ์–ธ๊ธ‰๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. . ์ •๋‹ต์€ @2x ๋ผ๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด ์˜ฌ๋ฐ”๋ฅธ์ง€?

@2x ๋งž์Šต๋‹ˆ๋‹ค. ํด๋” ์ด๋ฆ„์ด๊ฑฐ๋‚˜ ์ด๋ฏธ์ง€ ์ด๋ฆ„์— ์ถ”๊ฐ€๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

assets/@2x/image.png or assets/[email protected]

@์•„๋””๋ ˆ๋”” ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์ ˆ๋ฐ˜์˜ ์ „ํˆฌ์ž…๋‹ˆ๋‹ค. ๋‚ด ์บ”๋ฒ„์Šค๊ฐ€ ํ•ด์ƒ๋„๊ฐ€ ์ฆ๊ฐ€ํ•˜์ง€ ์•Š๊ณ  ํฌ๊ธฐ๊ฐ€ ์กฐ์ •๋˜๋Š” ์ด์œ ๋ฅผ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

๋ ˆํ‹ฐ๋‚˜์— ๋Œ€ํ•œ ๋™์ผํ•œ ๋ฌธ์ œ, ํ•ด์ƒ๋„ ์‚ฌ์šฉ: 2, ์ผ๋ถ€ PIXI.Text ์•ต์ปค ์œ„์น˜ ์ง€์ •์ด ์ž˜๋ชป๋ฉ๋‹ˆ๋‹ค. CSS์—์„œ ์บ”๋ฒ„์Šค์˜ ํฌ๊ธฐ๋ฅผ ๋‹ค์‹œ ์กฐ์ •ํ•˜๋Š” ๊ฒƒ์€ ๋ณ„๋กœ ๋„์›€์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•ด์ƒ๋„๋ฅผ 1๋กœ ์„ค์ •ํ•˜๊ณ  ํ…์ŠคํŠธ ๊ธ€๊ผด ํฌ๊ธฐ๋ฅผ ๋‘ ๋ฐฐ๋กœ ํ•œ ๋‹ค์Œ ์ ˆ๋ฐ˜์œผ๋กœ ์ถ•์†Œํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ํ…์ŠคํŠธ๋Š” ์—ฌ์ „ํžˆ ๋งค๋„๋Ÿฝ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์•ˆ๋…• Elyx0, ์—ฌ๊ธฐ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋ฐ”์ผ์šฉ ํ…์ŠคํŠธ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: https://github.com/JiDW/pixi-cocoontext

๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๊นŒ?

์•ˆ๋…•ํ•˜์„ธ์š” @JiDW , ๋“œ๋””์–ด

@GillesVermeulen

๋‚ด ํ”„๋กœ์ ํŠธ์—์„œ High DPI ์žฅ์น˜๋ฅผ ์ง€์›ํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ ค ์ค‘์ด๋ฏ€๋กœ ๋‹ค์Œ ์‚ฌํ•ญ์ด ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

์บ”๋ฒ„์Šค์˜ ํฌ๊ธฐ๋Š” ์กฐ์ •๋˜์ง€๋งŒ ์ ์ค‘ ์˜์—ญ์€ ์กฐ์ •๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด PixiJS์—์„œ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๊นŒ? (์˜ˆ: ์ตœ์‹ /์ตœ์‹  ๋ฒ„์ „)

์•ˆ๋…•ํ•˜์„ธ์š” @tobireif , ๊ทธ๋ ‡๊ฒŒ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋žซ๋™์•ˆ ๋ฌธ์ œ๊ฐ€ ์—†์—ˆ์ง€๋งŒ Pixi v2์— ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ตœ์‹  ๋ฒ„์ „๋„ ๋ฌธ์ œ๊ฐ€ ์•„๋‹Œ ๊ฒƒ ๊ฐ™์•„์š”.

@GillesVermeulen ์ž˜ ๋“ค๋ฆฌ

์บ”๋ฒ„์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‚˜๋ฅผ ์œ„ํ•ด ์ผํ•œ CSS ๋ฐฉ๋ฒ•(pixi.js ์ œ์™ธ)
canvas { image-rendering: optimizeSpeed; image-rendering: -moz-crisp-edges; image-rendering: -o-crisp-edges; image-rendering: -webkit-optimize-contrast; image-rendering: optimize-contrast; image-rendering: crisp-edges; image-rendering: pixelated; -ms-interpolation-mode: nearest-neighbor; }
์ด๊ฒƒ์ด ๋ˆ„๊ตฐ๊ฐ€๋ฅผ ๋„์šธ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•˜์—ฌ.

์•ˆ๋…•ํ•˜์„ธ์š” !

๋‚ด ๋งˆ์ง€๋ง‰ ํ”„๋กœ์ ํŠธ์— ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค .

๋‚ด ๊ฐœ์ฒด์—์„œ ์˜ฌ๋ฐ”๋ฅธ ํ”ฝ์…€ ํ•ด์ƒ๋„๋ฅผ ์–ป์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค... ๋ Œ๋”๋Ÿฌ์— ๊ด€ํ•œ ๊ฒƒ์ธ์ง€ ์•„๋‹ˆ๋ฉด ํ…์Šค์ฒ˜๋ฅผ ์ƒ์„ฑํ•œ ๊ทธ๋ž˜ํ”ฝ์— ๊ด€ํ•œ ๊ฒƒ์ธ์ง€ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ๋‘ ๊ฒฝ์šฐ ๋ชจ๋‘ window.devicePixelRatio๋ฅผ ์ถ”๊ฐ€ํ–ˆ์ง€๋งŒ ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ์˜ํ–ฅ์„ ๋ฏธ์น˜๊ธฐ ์œ„ํ•ด.

์ด ์Šค๋ ˆ๋“œ๋Š” ๋‹ซํžŒ ํ›„ ์ตœ๊ทผ ํ™œ๋™์ด ์—†์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ž๋™์œผ๋กœ ์ž ๊ฒผ์Šต๋‹ˆ๋‹ค. ๊ด€๋ จ ๋ฒ„๊ทธ์— ๋Œ€ํ•œ ์ƒˆ ๋ฌธ์ œ๋ฅผ ์—ฌ์‹ญ์‹œ์˜ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰