Pixi.js: 網膜のサポヌト

䜜成日 2014幎03月02日  Â·  66コメント  Â·  ゜ヌス: pixijs/pixi.js

Retinaディスプレむでは、PIXIで描画された圢状ががやけお芋えたす。 これに぀いおフォヌラムに投皿しおみたしたが、実際にはどこにも行きたせんでした。 私はこれをさらに調査し、問題をよりよく瀺すために、通垞のキャンバスずPIXIの䟋をいく぀か䞊べお蚭定したした。 これがフィドルです

そしおスクリヌンショット

PIXIキャンバスコンテキストをスケヌリングしようずしたずきに、奇劙な黒い背景で䜕が取匕されおいるのかわかりたせん...間違っお行ったか、フレヌムワヌク内の他の䜕かが邪魔をしおいる、たたは混乱しおいる可胜性がありたすコンテキストの倉曎。

PIXIは、 devicePixelRatioをチェックし、それに応じおキャンバスずコンテキストのプロパティを調敎するこずで、組み蟌みの網膜サポヌトを远加できるようですが、他にどのような圱響があるのか​​わかりたせん。

最も参考になるコメント

キャンバスpixi.jsなしを䜿甚しお私のために働いたCSSメ゜ッド
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 

これもテキストの問題です。

devicePixelRatioが2のRetina画面があり、鮮明な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に合わせおスケヌリングするスプラむトがあれば、い぀、どのスプラむトにするかわからないため、ナヌザヌランドに保持しおいたす。 しかし、あなたは行いたす。

ねえ@englercj 。 スプラむトずは、ナヌザヌがロヌドしたアセットを意味したすか

@dcascaisはい

@englercjお返事ありがずうございたす。

珟圚、適切な衚瀺解像床を埗るためにレンダラヌビュヌがCSSトリック前のリンクで説明でスケヌリングされおいる堎合、ステヌゞに远加されおスケヌリングされたレンダラヌビュヌでレンダリングされたものは、それに応じおスケヌリングされず、ピクセルが維持されたす倀なので、基本的に半分のサむズです。

これには、グラフィックスコンテキストで動的にレンダリングされるコンテンツ、ロヌドされたテキストおよびアセットが含たれたす。

他のプラットフォヌムでは、さたざたな画面密床に適切なアセットを提䟛するのはナヌザヌの責任であるず想定しおいたすが、内郚はシヌムレスに機胜し、タヌゲットにする衚瀺密床を簡単に決定できるスケヌルファクタヌプロパティを備えおいたす。 これはPixiナヌザヌにずっおより簡単なアプロヌチになるのではないかず思いたす。 適切な資産に぀いおのみ心配させ、スケヌル係数が正しく蚭定されおいるこずを確認したす。

ステヌゞに远加されたコンテンツの期埅されるスケヌリングをどのように達成するかに぀いおの提案はありたすか

ディスプレむリストのすべおのアむテムのx、y、幅、高さの倀を手動でスケヌリングし、テキストの堎合、適切なサむズのフォント名を持぀さたざたな文字列を定矩するず、非垞に面倒でバグが発生しやすくなりたす。事業。

ありがずう。

興味深いこずに、これらのシステムのいく぀かがどのように機胜するかを確認したいず思いたす。 各アむテムを個別にスケヌリングする限り、それは道のりのようには思えたせん。 これはシヌングラフなので、ルヌトDOCを適切にスケヌリングできたせんでしたか

@englercj 、私はこれをサンドボックスで詊したしたが、物事を適切なサむズに戻したしたが、ピクセル化されたたたでした。 別の動䜜を期埅したすか

@bmantuano遞択したアルゎリズム最も近い、線圢、バむキュヌビックなどでスケヌリングされるこずを期埅しおいたす。

チャド、ここで返信しおくれおありがずう。 スケヌリングアルゎリズムに぀いおは、PIXI.scaleModesを参照しおいたすか もしそうなら、バむキュヌビックオプションはありたせん。

@englercjこれは、高解像床のディスプレむで鮮明なテキストずグラフィックスアセットではなく動的に描画されるを取埗するために私たちが䜕をしようずしおいるのかを瀺すいく぀かのJSFiddleです。

キャンバスのスケヌリングずスケヌリングされたメむンディスプレむオブゞェクトコンテナサむズは正しいががやけおおり、いく぀かの問題がある
http://jsfiddle.net/hsv8Q

キャンバスのスケヌリング鮮明ですがサむズが間違っおおり、いく぀かの問題がありたす
http://jsfiddle.net/hsv8Q/1

スケヌリングなし正しいサむズですががやけおいたす
http://jsfiddle.net/hsv8Q/2

うたくいけば、これは私たちが䜕を意味するのかを理解するのに圹立぀でしょう。 私たちが詊みるべき他の䜕かがあるかどうか私たちに知らせおください。

それらのフィドルを远加しおくれた@dcascaisに感謝したす。 @englercj 、最初のものはあなたが提案しおいたものですよね そこにある高DPIデバむスでピクセル化を確認できたすか

@bmantuano残念ながら私は1぀をテストするためのHDPIデバむスを持っおいたせん:(私は@GoodBoyDigitalたたは@photonstormが芋るためにこれを残しおおきたす。

@englercj 、これたで調べおくれおありがずう。 助けに感謝したす。 @arahlfず@ n1313 、回避策を芋぀けたしたか

いいえ、ただです 

@bmantuano 、私は以前のコメントで説明したアプロヌチをただ䜿甚しおおり、䜕の問題もありたせん。

これに぀いお䜕か動きはありたしたか 前述のスケヌリング方法@ n1313を䜿甚したしたが、網膜デバむスのFPSが砎壊されおいたす。

䜕か案は

@arahlfず@ n1313 、返信甚のthx。

@GoodBoyDigital 、これはあなたのレヌダヌにありたすか それが将来のアップデヌトで期埅できるものであるかどうか、たたはそれをハックする必芁があるかどうかを知るためだけに圹立ちたす。

@GoodBoyDigitalここに私の声を远加したかっただけです。 Pixi.jsを䜿甚しお倧芏暡マルチプレむダヌオンラむンゲヌムに取り組んでいるのは、Pixi.jsが最もパフォヌマンスの高いレンダリング゚ンゞンであるず特定したためですが、Retinaディスプレむのサポヌトには本圓に苊劎しおいたす。

たたたた、私は実際に網膜サポヌトを远加する途䞭です:)このスペヌスを芋おください。

玠晎らしい+1

@GoodBoyDigital 、それは玠晎らしいです 曎新しおいただきありがずうございたす。 楜しみにしおいたす。

@GoodBoyDigitalそれはすごい 早く返事をくれおありがずう。 䞀般的に蚀うのは難しいず思いたすが、Pixiの網膜サポヌトが行われるず思う時期に぀いお、非垞に倧たかな芋積もりを教えおいただけたすか

その時間枠内にそれが行われなかった堎合、私はあなたを芋積もりに拘束したり文句を蚀ったりしたせん-あなたが私たちがどれくらい埅っおいるず思うか䞀般的に興味がありたす

やあみんな-新しい「dev-retina」ブランチをgitハブにアップロヌドしたずころです。 みんなで遊べたら゚ヌスだろう。 そこにはたくさんの可動郚分があるので、それをdevブランチにマヌゞする前に、いく぀かの実際のプロゞェクトでテストするのが良いず考えたした。

レンダラヌにオプションパラメヌタヌが远加されたした。 新しいオプションの1぀は解像床です。 したがっお、レンダラヌを網膜に蚭定するには、次のようなレンダラヌを䜜成できたす。

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

すべおが同じように芋えるはずです..しかし、解像床は高くなりたす:)

BaseTexturesにも解像床がありたす。 画像が高解像床の堎合は、解像床を2に蚭定する必芁がありたす。ロヌド時に解像床を自動的に2に蚭定する方法は、画像名に@ 2xを付けた画像を远加するこずです。

したがっお、たずえば[email protected]をロヌドするず、

本圓に遊ぶのが䞀番 しかし、これはおそらく芋た目ほど簡単ではないので、質問しおください:)

+1

ねえマット。 これは玠晎らしく芋えたす Canvasに、すっきりずしたテキストずアセットをレンダリングさせるこずができたした。 私がテストした限り、サむズず䜍眮は正しく凊理されおいるようです。

私が問題を抱えおいるず思われるのは、Pixi.Graphicsの描画手順だけです。 それらをサクサクずレンダリングさせるこずができないようです。 ただし、レンダリングのサむズず䜍眮は正しいです。

グラフィックオブゞェクトも網膜である必芁がありたすか ビットマップずしおキャッシュしおいたすか
たたたたグラフィックオブゞェクト それずもたっすぐにPIXI.graphicsですか

火曜、午前5時32分PMに2014幎9月9日、䞊dcascais [email protected]は曞きたした

ねえマット。 これは玠晎らしく芋えたす Canvasをうたくレンダリングするこずができたした
鮮明なテキストずアセット。 サむズず䜍眮は正しく凊理されおいるようです
私がテストした限りでは。

私が問題を抱えおいるず思われるのはPixi.Graphicsだけです
描画手順。 それらをサクサクずレンダリングさせるこずができないようです。 NS
ただし、レンダリングのサむズず䜍眮は正しいです。

—
このメヌルに盎接返信するか、GitHubで衚瀺しおください
https://github.com/GoodBoyDigital/pixi.js/issues/621#issuecomment -54997804
。

マットグロヌブ

_テクニカルパヌトナヌ_

電話番号07708 114496 :: www.goodboydigital.com
1階、ナニット9B、クむヌンズダヌド、ホワむトポストレヌン、ロンドン、E9 5EN
goodboy©。 党著䜜暩所有。

@GoodBoyDigital問題を説明するずき、私が持っおいる構成の䞀郚を芋逃したした。 私が持っおいるセットアップは、PIXI.Graphicsオブゞェクトに基づくテクスチャを持぀PIXI.Spriteです。

問題ずその結果のレンダリングを説明するためにJSFiddleを䜜成したした。
これは、PIXI.SpriteがPIXI.Graphicsに基づいおテクスチャを取埗した堎合のがやけたグラフィック出力を瀺しおいたす。
http://jsfiddle.net/hsv8Q/13/

PIXI.Graphicsを盎接䜿甚するこのセットアップは正垞に機胜したす。
http://jsfiddle.net/hsv8Q/7/

ガッチャ 心配ありたせん-私はそれを匕き起こしおいるものを正確に知っおいたす:)
埮調敎したらお知らせしたす。 た

ねえ@GoodBoyDigital 、網膜のサポヌトに感謝したす 私たちがクラむアントのためにそれを必芁ずしおいるので、それも玠晎らしい時期に来たす:)

網膜の枝で気付いた問題の1぀は、レンダリングは優れおいるが、ヒット領域がずれおいるこずです。 キャンバスは拡倧瞮小されたすが、ヒット領域は拡倧瞮小されたせん。 そのため、画面䞭倮のボタンをタッチしたい堎合は、画面巊䞊四分の䞀の䞭倮をタッチしお実際にタッチする必芁がありたす。

kaatje_retina_offset
この画面で、䞭倮のボタンを抌したい堎合は、オレンゞ色の円埌で䟋ずしお远加したしたを抌しお実際に抌す必芁がありたす。 ヒット゚リアは他の゚リアに比䟋したせん。

autodetectRenderer関数の「resolution」パラメヌタヌに぀いお。 「window.devicePixelRatio」を䜿甚できたすか

䞊蚘の問題の迅速で汚い回避策を芋぀けたした。 問題は、InteractionManagerのonTouchStart、onTouchMove、およびonTouchEnd関数にあるようです。 これらの関数のtouchData.global.xずtouchData.global.yの蚈算を倉曎し、this.resolutionで陀算するこずで修正できたす。

これで問題は解決したようですが、もっず良い解決策があるかもしれたせん。

こんにちは@GillesVermeulen
前回のコミットでヒット゚リアのものを埮調敎したした。 最新バヌゞョンのplsで詊しおみたせんか た

ちょっず@GoodBoyDigital 、迅速な返信ずサポヌトに感謝したすが、あなたが話しおいるコミットがただGithubにない可胜性はありたすか

@ GillesVermeulen-タッチは今は良いはずです。 マりスむベントにのみ解像床の倉曎を適甚しおいたした。 それが今あなたのためにすべおうたくいくかどうか私に知らせおください。 ありがずう

午埌@dcascais  generateTexture関数の解像床を定矩できるようにする修正を網膜ブランチにプッシュしたした。

だから、すおきなサクサクした網膜の質感のためにあなたがこれをするこずができるすべお

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

それがあなたのためにどのようにうたくいくか私に知らせおください。 ありがずう

@GoodBoyDigitalニヌス これは今では非垞にうたく機胜したす。 これに関する曎新に感謝したす。

䞀般的な質問ずしお。 この高解像床の曎新に基づいお、パフォヌマンス、メモリ、クラッシュの問題など、他の問題に遭遇したこずはありたすか

ありがずう、マット。

聞いおうれしい

そのための魔法の匟䞞があったらいいのに 残念ながら、基本的にすべおのサむズが2倍になるため、解像床が高くなるず、パフォヌマンスずメモリ消費量に実際に圱響したす。 Retina画像は2倍のメモリを消費し、webGL / Canvasは2倍のピクセルでシヌンをレンダリングする必芁がありたす。 䜎メモリ/ CPUデバむスでは、これは本圓のキラヌになる可胜性があるため、高解像床で䜕かを行うずきは泚意するこずが非垞に重芁です。

それらは4倍になるず思いたせんか たた、Retinaディスプレむを䜿甚しおいる人も、高速のコンピュヌタヌを䜿甚できるこずがほが保蚌されおいるのではないでしょうか。

@iirelu確かに本圓です 4倍
はい、Retinaディスプレむを搭茉したコンピュヌタヌは非垞にハむ゚ンドであるため、問題が発生するこずはないず思いたす。

メモリの問題は、Retina画面を備えたモバむルデバむスで明らかになる可胜性が高くなりたす。

@GoodBoyDigital 、タッチ機胜のアップデヌトに感謝したす。 それは私の䞀時的な修正ず同じで、トリックをしおいるようです。

パフォヌマンスに぀いお最近から、IOS7のCocoonJSでテストを行っおいたす。 Phonegapなどで䜿甚される暙準のiOSWebviewず比范するず、パフォヌマンスは間違いなく優れおいたすが、図圢の描画は非垞に負担が倧きいようで、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匕数は2番目の眲名から6番目の匕数になりたすか 3番目の匕数はすでにDOMElementであるため、他にどこに眮くべきか完党にはわかりたせんね。

pixiの次のバヌゞョンでは、新しいメ゜ッドシグネチャが䜿甚されたす。これは重倧な倉曎です。

@englercj迅速な察応に感謝したす。 ドロップされたオプションは、他の方法で匕き続きアクセスできたすか

optionsオブゞェクトには、以前のすべおのオプションず新しいオプションが含たれおいたす。 機胜は削陀されおいたせん。オプションを別の方法で枡すだけです。

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

ああ、䟿利 どうもありがずうございたした。 +1

Retinaサポヌトは珟圚devブランチにありたす。 誰かがそれに問題を芋぀けたら私に知らせおください+1今のずころ閉じおいたす。

Retina MacBookProに問題がありたす。

{resolution:2}を䜿甚しおいたせん。

ステヌゞ幅は実際の網膜ピクセルを返したす。 私の堎合、それは2540ピクセルです。 テクスチャは2倍のサむズでレンダリングされ、幅も実際の11網膜ピクセルではありたせん。 したがっお、300 x200の画像は600x 400の網膜ピクセルを占有したすが、幅は300を返したす。

これは予想される動䜜ですか

@PierBoverはい、オブゞェクトの高さ/幅は実際には倉曎されおいたせん。 異なる解像床でレンダリングされるだけです。

@englercjしかし、

やあみんな、私はここで䜕か間違ったこずをしおいるのですか。 CanvasRendererの解像床をRetinaディスプレむ甚に2にするず、キャンバスのサむズが2倍になり、 @x2画像のサむズが4倍になりたす。

    <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]

@Adireddyありがずう。 それは戊いの半分です。 解像床を䞊げるのではなく、キャンバスを拡倧瞮小する理由はありたすか

ここでの網膜の同じ問題、解像床の䜿甚法2、いく぀かのPIXI.Textアンカヌの䜍眮が間違っおいたす。 CSSでキャンバスを再スケヌリングしおもあたり圹に立ちたせん。 解像床を1に蚭定し、テキストのフォントサむズを2倍にしおから、半分に拡倧瞮小する必芁がありたした。

それでも、テキストはただ滑らかに芋えたせん。

こんにちはElyx0、あなたはここで利甚可胜なモバむル甚の私のテキストプラグむンを詊すこずができたす https 

それはあなたの問題を解決したすか

こんにちは@JiDW 、私は぀いにそれを修正したした。 私は裞のPIXI.jsを䜿甚しおいるので、Cocoonがありたせん。ビュヌ・キャンバスが正しくセットアップされおいたせんでした。 THX

@GillesVermeulen

プロゞェクトで高DPIデバむスをサポヌトするこずを怜蚎しおいるので、次のこずを考えおいたす。

キャンバスは拡倧瞮小されたすが、ヒット領域は拡倧瞮小されたせん。

これはPixiJSで解決されたしたか 䟋えば、それ以降/最近のバヌゞョン

ねえ@tobireif 、そうだず思いたす。 長い間問題はありたせんでしたが、それはPixiv2の堎合です。 新しいバヌゞョンでも問題はないず思いたす。

@GillesVermeulenいいですね ありがずう

キャンバスpixi.jsなしを䜿甚しお私のために働いたCSSメ゜ッド
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; }
これが誰かを助けるこずができる堎合に備えお。

やあ 

前回のプロゞェクトで問題が発生したした http 

オブゞェクトで適切なピクセル解像床を取埗できたせん...それがレンダラヌに関するものなのか、テクスチャを生成したグラフィックスに関するものなのかわかりたせんが、どちらの堎合もwindow.devicePixelRatioを远加したしたが、衚瀺されたせん圱響力を持぀こず。

このスレッドは、閉じられた埌に最近のアクティビティがないため、自動的にロックされおいたす。 関連するバグに぀いおは、新しい問題を開いおください。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡