0

これはここでの私の最初の投稿であり、私はかなり必死です。

私の問題は、私がクライアントのためにゲームを作ることになっているということです(より多くの友人が好きなタイプのものなので、お金はかかりません:(しかし、私は仕事をしているので、私はそれを行うことができ、担当者を構築するなど)

XNA 4を使用しているため、C#を使用しています。

次に、特定の色、具体的には黒のピクセルをカウントする方法を理解する必要があります。それでおしまい。私はたくさんのスプライトを描きましたが、それらは黒ではありません。それらのいくつかはUIですが、それらはすべて画面の横にあるので、それらのピクセルを無視できるはずですよね?

すべての描画呼び出しを行ったら、バッファーを読み取ることができるはずだと思いました。しかし、それが可能かどうかを教えてくれるインターネット関連のもの(読み取り可能)が見つかりません。読み取りは、私が興味を持っているピクセルの色です。私がする必要があるのはそれだけです。たとえば、幅50からウィンドウの端まですべてを考えてみましょう。

C#とXNA4の答えが私に必要なものです。あなたが私に銀の大皿で答えを与えるか、それのさまざまな部分を行う方法を私に教える何かの方向に私を向けるかどうか。

プログラマーが行くとき、私はまだ初心者として数えます、ただ...訓練された初心者なので、私はあなたの優れた答えに愚かな質問をするかもしれません:)

4

1 に答える 1

3

GraphicsDevice.ResolveBackBuffer() を使用して、画面をResolveTexture2Dにコピーできるはずです。次に、Texture2D.GetData()を使用して、テクスチャのカラーデータをColor[]配列に格納できます。

ResolveTexture2D texture = new ResolveTexture2D(
    graphics.GraphicsDevice,
    graphics.GraphicsDevice.PresentationParameters.BackBufferWidth,
    graphics.GraphicsDevice.PresentationParameters.BackBufferHeight,
    1,
    graphics.GraphicsDevice.PresentationParameters.BackBufferFormat);

Color[] colorData = new Color[texture.Width * texture.Height];
texture.GetData<Color>(colorData);

そこから、エッジピクセルを無視して、色を数えることができるはずです。

于 2012-08-20T15:32:17.827 に答える