2011-07-21 17 views
5

私はCanvasオブジェクトを扱うすべての人がpixelbufferを4(RGBA)で乗算することに気付きました。私はネイティブピクセルコーディング(DelphiとC++)で多くの作業をしており、これを通常の32ビットRGBA(888-8エンコーディング)として認識しています。 私の質問はです:ブラウザのピクセル形式を検出する方法はありますか? 16ビット(565エンコーディング)または24ビット(888エンコーディング)をサポートするデバイスで実行している場合、ブラウザが各再描画のビットマップをダウングレードする必要がある場合は非常に遅くなります。特にアルファブレンディングが関与する場合。Javascript Canvas pixelformat

また、これはセカンダリです:純粋な888または565のビットマップをjavascriptで作成することはできますか?または、8ビットパレットベースのビットマップはどうですか? JSベースのゲームは、私の見解では8ビットピクセルで作業するだけで大​​いに役立ちます。

+0

私の質問は次のとおりです。「ブラウザのピクセル形式を検出する方法はありますか?」 –

答えて

3

いいえcanvasのピクセルをダウングレードするように見える方法はありません。それは、imageDataが仕様自体に関係しているからです。

もちろん、8ビットPNG以外のものを使用してjavascriptゲームを作成することはできますが、時間と読み込み時間は節約できますが、レンダリング時間はかかりません。

+0

私は質問を再定式化することができると思います:16ビットグラフィックスのみをサポートしているブラウザでコードを実行すると(モバイルデバイス、ほとんどの場合32サポート)、ピクセルデータは565形式常にRGB-A形式で表示されますか? –

+0

私は後者を信じています。 –

2

いいえ、必要な色空間を指定する方法はありません。これを手動でハックするとレンダリングがさらに遅くなります。私の経験では、一部のブラウザ(Google Chrome)は非常に複雑なゲームをレンダリングでき、高いフレームレートを維持できます。

0

実際には、イメージカラースペースとサーフェスカラースペースの2つのエンティティを混合しています。 5-6-5は、定義によって透明性の概念を持たない表面色空間です。 Imageと<canvas>はzオーダレンダリングの対象ですので、アルファベットを1つの形式で持つ必要があります。

答えは要件に違反しているため「いいえ」です。

+0

565は単純にエンコーディング方式であり、好きな場合は "コーデック"です。私はこれらの用語を単に各ピクセル(この場合は16ビットワード)のビット範囲と記憶媒体に下線を引くために使用しました。 15/16ビットピクセルをRGBにデコードするのは非常に簡単です。ポイントは、別の方法で生のピクセルデータを追いかける際にモバイルデバイスにスピードブーストが存在する可能性がある場合でした。しかし、私は実際には、ブラウザがピクセルデータをRGB値の配列にデコードすることを期待していました。 Zオーダーレンダリングについては、データ型ではなくHLIと関連しています。 –