問題タブ [spritebatch]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - テクスチャをタイリングするより経済的な方法は何ですか?
タイルベースの 2D ゲームを開発しています。skybackground、landbackground、town、UI などのコンポーネントに分割し、各コンポーネントが描画を処理します。描画呼び出しを呼び出す前にspritebatch.Begin()
、デフォルト値を使用して、すべてを 1 つのバッチで描画します。
土地の塊を描くために、私はそれがいっぱいになるまで、その領域全体に正方形の土地テクスチャを繰り返し描きます。ただし、まさにそれを行うというspriteBatch
モードがあります。linear wrap
欠点は、1 つのグローバルspritebatch.begin()
を各コンポーネントに何度も分割して設計を変更する必要があることです。
begin()
だから私の質問は、テクスチャを手動でタイリングするか、サブコンポーネント間で分割するか、どちらがより良い/より経済的かということend()
です?
単一の を分割する必要がある他の問題もありspriteBatch.Begin()
ますspriteBatch.Begin()
。またはさらに10?それとも100以上?さらに追加することを心配するには、どの規模から始めればよいか知りたいbegins()
です。
java - libgdx: PerspectiveCamera で SpriteBatch が表示されない
私は OpenGL の基本的な知識を持っていますが、libgdx から始めたばかりです。
私の質問は、まったく同じコードを使用しているのに、 OrthographicCamera から PerspectiveCamera に切り替えるだけで、 SpriteBatches が表示されなくなるのはなぜですか?
私が使用するコードは次のとおりです。
create() メソッド:
そして render() メソッド:
ここで、 resize(int width, int height) メソッドの場合、次のようにカメラをセットアップします。
私はこれを得る:
しかし、カメラの種類を変更すると:
私はこれを得る:
私が尋ねている理由は、OpenGL でテキスト (フォント) を描画する libgdx の組み込み機能が本当に気に入ったからです。しかし、彼らの例では、Font インスタンスにパスする SpriteBatch を使用し、常に Ortho Camera も使用しています。SpriteBatch と Font の描画機能が PerspectiveCamera で動作するかどうかを知りたいです。
c# - Viewport.Project の問題
私の XNA ゲームでは、Viewport.Project を使用して、太陽の 3D 座標の 2D 画面座標を取得しています (主に見栄えが良いため)。私はこれを機能させましたが、太陽の反対方向を見ると、そのうちの 2 つ (技術的には 1 つ) が見えます。ここで何が起こっているのかわかりません..
何が起こっているか知っている人はいますか?どうすればこれを防ぐことができますか?
これを視覚化するために、私が話していることのイメージを 次に示します。
これはコードです:
c# - XNA-カリングパフォーマンスの問題
私のタイルを描画するこの方法は非常に遅いようです。何が間違っているのか正確にはわかりません。私のカリング方法が機能しておらず、画面外に何かを描画していると信じていますが、完全にはわかりません。ここにあります:
GetTileSetTypesは、DirtBlock_North、DirtBlock_Centerなどのさまざまなテクスチャについて、周囲のタイルを取得する関数です。
タイルコンテンツは、私のブロックテクスチャを含む単なるクラスです。
c# - Spritebatch 設定で、後方の面のカリングなどを引き起こしているもの
私が作成したセル シェーダーでは、エッジ検出は 2D テクスチャ/レンダー ターゲットでのみ機能します。そこで、レンダリング メソッドを調整して、テクスチャに設定され、SpriteBatch で描画されるレンダー ターゲットにテクスチャを描画するようにしました。
ただし、SpriteBatch (らしい?) は私の設定を無視しているようです:
明らかにオブジェクトを正しく描画します。しかし、そうではありません。
c# - SpriteBatchを使用したXNABlendState
次のように機能するには、BlendStateが必要です。
- 透明なPNGは期待どおりに描画され、背後にあるものはすべて保持されます
Color.White
PNGをそのまま描画するために使用します- 色のアルファチャネルを変更して、テクスチャの「不透明度」を変更します
この効果を得るには、BlendState.AlphaBlend
は近いですが、アルファを100または255以外の数値に設定すると、透明な部分として白が描画されます。
だから私たちはこれを試みました:
これは機能しますが、2つのPNGが互いに重なっている場合に望ましくない効果が発生する場合を除きます。基本的に、ピクセルデータが追加されているように見える奇妙な線がいくつか表示されます(または何か)。
例:
事実上、BlendState.AlphaBlend
これは次のとおりです。
画像は上より良く見えます:
ただし、アルファは機能しません。アルファとして100を使用すると、背景が白に置き換えられます。
BlendState
SpriteBatchから目的の効果を得るには、何を使用する必要がありますか?Color.Black
別の方法で機能させるなど、別の色を使用してもかまいません。
Color.Red
* PS-もう1つの優れた機能は、テクスチャを「色付け」するために使用できる場合ですが、最初に一般的に機能させたいと考えています。
xna - Vector2 (XNA のライブラリから) が int ではなく float を使用するのはなぜですか?
Vector2 (XNA のライブラリから) がintではなくfloatを使用するのはなぜですか?
コンピュータ画面上の位置はピクセル単位で与えられるため、カーソル位置は 2 つの整数で定義できます。半画素なんてものはありません。では、なぜフロートを使用するのでしょうか。
SpriteBatchクラスで、 Draw と呼ばれる 7 つのオーバーロードされたメソッドを見つけました。それらの2つ:
したがって、 Drawはint座標とfloat座標の両方を受け入れることがわかります。
ゲームのオブジェクトの画面座標を実装しているときに、この問題に遭遇しました。オブジェクトのサイズと画面座標を保持するには、 Rectangleが適切な選択であると想定しました。しかし、今はよくわかりません...
c# - RenderTarget2D は、すべてのアルファ パープルを濃くします
そのため、ゲームプレイを XNA の RenderTarget2D にレンダリングして、シーンにシェーダーを適用できるようにしようとしています。ある程度は機能していますが、255 以外のアルファ レベルで描画されたものはすべて紫色に着色されているようです。アルファ効果は効いていますが、紫がかっています。解決策を探してみましたが、全画面が紫色にレンダリングされているか、アルファが紫色に置き換えられているように見えるだけです。
私の問題は、それらのどちらでもありません...
これは、何が起こっているかを示すために投げたシーンです。ご覧のとおり、アルファ効果は機能していますが、オブジェクトは紫色に着色されています。
レンダリングコードを投稿する部分は次のとおりです。
これは私が使用している初期化です。
renderEffect はエフェクト ファイル、Sprite は想定される画面サイズ (さまざまな解像度に対応するため) に対する描画を処理するクラスです。
私は XNA 3.1 で作業しています。今では 4.0 を使用する必要があることはわかっていますが、特定の状況で役立つ 3.1 に関する本を持っているため、使用していません。
とにかく、ここでいくつかの助けをいただければ幸いです...
c# - XNA は参照として SpriteBatch と Content を渡します
最近、MonoMac で XNA を使い始めました。授業に問題があります。テクスチャと位置情報を内部に持つクラスを作成したい。また、描画機能を作りたいです。
私の考えは、spriteBatch と Content を周りに渡して、テクスチャを読み込んで後で描画できるようにすることでした。ただし、このオブジェクトに渡す Content オブジェクトはテクスチャをロードしません。クラス外で Content を試したところ、テクスチャが正常にロードされたので、テクスチャがそこにある必要があります。
これは私がインスタンスを作成する方法です:
多分私は間違ったモデルを使用しようとしています..クラス内でスプライトバッチとコンテンツを使用したくないかもしれませんが、スプライトバッチとコンテンツをグローバルにすることはできますか?
ご協力ありがとうございました
android - LibGDX SpriteBatchマルチテクスチャは可能ですか?
LibGDXフレームワークのSpriteBatchクラスをうまく使用しています。私の目的は、シェーダーを介してスプライトの表現を変更することです。
SpriteBatchクラスからデフォルトのシェーダーをコピーし、別の均一なサンプラー2dを追加しました
シェーダーにテクスチャを与えるための実用的な方法はありますか?このようにすると、常にClearColor画面になります。
各テクスチャだけが機能しています。メッシュクラスを使用して手動で描画すると、期待どおりに機能します。では、SpriteBatchの便利さを利用するにはどうすればよいですか?
ヘルプのためのTHX