問題タブ [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.

0 投票する
2 に答える
429 参照

c# - SpriteBatch System.ArgumentNullException

倉庫番のような、グリッドの動きに基づいた簡単なゲームを書いています。レベルを保存するには、いくつかの異なるテキストファイルを使用する必要があります。私はいくつかのコードを書きました、そして今私はエラーを受け取ります:

System.ArgumentNullException "このメソッドは、このパラメーターのnullを受け入れません。Nazwaparametru:texture"

コード全体がいくつかのファイルに含まれています。私のコードの何が問題になっていますか?

Game1.cs

Sceny.cs

ObiektyGry.cs

level1.txt(例)

0 投票する
2 に答える
570 参照

c# - 長方形をスプライトとして描画するときに、長方形の回転中心を変更するにはどうすればよいですか?

1 ピクセルのペイント ピクチャを使用して XNA で線を描画し、そのピクセルを高さ 100、2 の四角形に合わせて、線として表示します。このようにして、後で長方形を描くことができます。

長方形も回転させたいのですが、回転の中心は常に左上隅です。どうすればこれを変更できますか?

0 投票する
1 に答える
203 参照

c# - XNA。spritebatch の begin/end ステートメントをできるだけ少なく使用するように設計する方法

XNAで2Dゲームを作っています。ドローアブル ゲーム コンポーネントの使用から始めて、とても満足しました。すべてのスプライトは drawable-game-component から派生し、それぞれに独自の begin/end ステートメントがあります (壁を構成する各タイルも)。それ以来、少し読んだ後、これはパフォーマンスのために悪い方法であることに気付きました。

今、私はそれを行うための良い方法は何だろうと思っています.私のゲームの各部屋について言ってみましょう...

私が尋ねている理由は、各ブロックのフィールドを公開する必要があるためです。これにより、Room クラスは、_spritebatch.Draw などを実行できるようになります。block._position

これは本当に問題ではなく、パフォーマンスが向上すると思いますが、これを行うために推奨できるより良いアーキテクチャはありますか?

また、そのコードがそこにあるので、私が使用している SpriteBatch.Begin パラメータについて誰かコメントできますか? 彼らは最速のものですか?そこに必要なのは変換だけです

0 投票する
1 に答える
3225 参照

3d - XNA/Monogame、複数のせん断/歪んだスプライトを描画する最速の方法

私は通常SpriteBatch、2D ゲームの XNA/Monogame で作業しており、最近では などの 3D 描画方法を詳しく調べていDrawUserIndexedPrimativesます。私は、アニメーターがスプライトとテクスチャをせん断する機能を持ちたいというプロジェクトに取り組んでいます。

を使用すると、オブジェクトの剪断を開始するためにSpriteBatchマトリックスを渡すことができます。SpriteBatch何かのようなもの:

SpriteBatchこれの明らかな欠点は、せん断されたスプライトごとに新しい開始呼び出しと終了呼び出しを行う必要があることです。SpriteBatch現在、ゲームを開始するために必要な呼び出しは 2 つだけです。1 つは UI 用、もう 1 つはワールド用です。私たちのアーティストは、木を揺らしたり、生き物の足や手足をアニメートしたりするためにせん断を使用したいと考えていたので、オプションを与えると、その数が 10 以上の個別のバッチにジャンプすることがわかりました。

平均的なレベルには、それぞれ 10 ~ 20 のスプライトを含む約 250 の要素があります。

1000 個のスプライトで描画を呼び出す Android 用のテストを作成しました。1000 回、600 回、約 11 秒または約 53 fps でスキューなしですべてを描画できます。しかし、スプライトを 10 個ごとに歪ませる (100 個の新しいSpriteBatch呼び出しを追加する) と、47 秒、つまり約 12fps かかります。

それは本当に悪いです。わずか 200 個のスプライト (10 個ごとに歪んだもの) の場合でも、テストは 28fps に低下します。

そのため、 で描画された Quads を使用して同じテストも作成しましたDrawUserIndexedPrimitives。各クワッドはBasicEffect、Game クラスで作成され、Spriteクラス コンストラクターを介して渡される共有を使用します。pass.Apply()次のように、それぞれの前に World Matrix と Texture を設定します。

1000 個のスプライトの場合、スキューなしで、これにより 12 fps が得られます (1000 回のspriteBatch呼び出しに似ていると思います)。それは本当に悪いです。しかし、10 番目のスプライトごとに歪んだ 200 のスプライトのみで、46 fps を取得しSpriteBatchますDrawUserIndexedPrimitives

- -私の質問 - -

DrawUserIndexedPrimitivesを継承する独自のクラスに含まれるスプライトを保持しながら、(または同様のもの)への呼び出しをバッチ処理するにはどうすればよいDrawableGameComponentですか? この最後の部分は、ゲーム エンジンの性質と、アニメーションやコリジョンなどを処理する方法のために非常に重要です。

Vertex Buffers と についてできる限り読んだことDrawIndexedPrimitivesがありますが、頭がまとまらず、この方法で描画されたスプライトに新しいテクスチャとワールド変換を割り当てる方法がわかりません。

SpriteBatchこれらの呼び出しをバッチ処理した場合と同等またはより優れたパフォーマンスが期待できますか?

0 投票する
2 に答える
5924 参照

java - SpriteBatch の色を設定 (色付け用) はすべての描画に影響します

AnimatedSprite特定の を描画するクラスを作成しましたTextureRegion。時々、色合いの効果が必要になるので、設定します (this.color はColormy のフィールドですAnimatedSprite):

ただし、AnimatedSpriteの色を黒または任意の色に設定すると、他のすべての色がその色合いになります。バッチを終了して新しいバッチを開始しようとさえしflush()ますが、何も機能していないようです。

色合い効果を正しく適用するのを手伝ってください。どんなアイデアでも感謝します。

0 投票する
1 に答える
266 参照

c++ - Direct3DおよびXAMLでのSpriteBatchの使用

WindowsPhoneSDKが提供するテンプレートDirect3DWithXAMLを使用するWindowsPhone8で実行されるプロジェクトを作成しました。std::unique_ptr<DirectX::SpriteBatch> m_SB;また、DirectXTKを組み込み、CubeRenderer.hで宣言しました。

関数CreateDeviceResourcesでそれを割り当てようとすると、次のようになります。

エラーが発生します:不明なモジュールでタイプ「System.AccessViolationException」の未処理の例外が発生しました。

なぜなのかわかりません。これは、Direct3D(ネイティブ)テンプレートを使用してプロジェクトを作成する場合に完全に機能します。

どんな助けでもいただければ幸いです。

0 投票する
1 に答える
363 参照

c# - spriteBatch.DrawString は、コンパイルされたスプライトシート テクスチャからテキストをどのように描画しますか?

各呼び出しは、テキスト文字列のすべての文字を個別に描画しますか(フレームごとに各文字をspriteBatch.DrawString(spriteFont, "text", new Vector2(10, 20), Color.White)呼び出します)、または 1 つのテクスチャを作成して再描画しますか、それとも他の方法で機能しますか?spriteBatch.Draw

0 投票する
1 に答える
527 参照

xna - SpriteBatch with DrawIndexedPrimitives

This is my first 3D application that I have created so sorry if this seems like such a simple question but I have searched the internet and these forums to try and find an answer.

I am attempting to draw a simple string to the screen using the spriteBatch.DrawString command.

The application is similar to Minecraft with a large quantity of cubes on the screen. To sort out lag issues all the cubes are created via vertices and hardware instancing has been implemented.

The issue is when ever I call spriteBatch.Begin() all the other cubes appear differently. I am aware that spritebatch changes some states so the following lines have been added

Bellow is the code used to draw the player

This is the code used in the main class to draw everything

I would like to post screenshots of the problem to show it more clearly but as this is my first post I do not have the rights to post images. I'm happy to email the images to people.

I'm happy to include any other information but it seems like such a simple problem.

Thanks for any help that you may be able to provide.

Sam Vickery

0 投票する
1 に答える
861 参照

xna - SetRenderTarget を呼び出す場所

SpriteBatch.BeginRenderTargets をとの間で変更したいと思いSpriteBatch.Endます。私はすでにこれが機能することを知っています:

しかし、私は本当にこれを機能させたいです:

誰かがこれをしているのを見たことがありますが、その理由はわかりませんでした。

編集:なぜ私がこれをやりたいのかについてもう少し:

私のプロジェクトでは、SpriteSortMode.Immediate (必要に応じて BlendState を変更できるようにするため) を使用し、並べ替えられたスプライトのリストを単純に反復処理して、それらすべてを描画します。しかし今、いくつかのスプライトにマルチパスシェーダーを適用したいのですが、すべてではありません! 私はシェーダーにはまったく慣れていませんが、私が理解したことから、最初のパスを使用して中間スプライトにスプライトを描画し、2 番目のパスを使用して最終レンダー ターゲットに中間スプライトを描画する必要があります。(ガウスぼかしピクセルシェーダーを使用しています)。そのため、新しい開始/終了を作成することなく、目的のシェーダーを使用して、目的のターゲットに描画したいと考えています。