2

申し訳ありませんが、これは誰の役にも立ちませんが、元のポスターのような質問ですが、Ultima 4 の SHAPES.EGA を Texture2D に変換しようとしています。SHAPES.EGA の各バイトは 2 ピクセルを表し、256 個の 16x16 グラフィックがあります。実際の画像サイズに関係なく、XNA の Reach プロファイルは 2048 を超える画像サイズをサポートしていないため、それらを正方形にする必要があります。次のコードは、最初の行に必要なものを取得しますが、それ以降の行はすべて正しく機能しません。(このパターンが続くと仮定すると、17 行目は 2 行目のように見えます。) 私はこれに何時間も取り組んできましたが、この時点では何もありません。

int cur_size = 16;

GFX.SHAPES_EGA = new Texture2D(GraphicsDevice, cur_size * 16, cur_size * 16);
Color[] temparray = new Color[(cur_size * 16) * (cur_size * 16)];

int CurrentIndex = 0, foo;
for (int Vertical = 0; Vertical < cur_size * 16; Vertical++) //16
{
    for (int Horizontal = 0; Horizontal < 16; Horizontal++)
    {
        for (int CurByte = 0; CurByte < 8; CurByte++)
        {
            //foo = (Vertical * (cur_size / 2)) + (Horizontal * 8 * cur_size) + CurByte;
            foo = (Vertical * (cur_size / 2)) + (Horizontal * 8 * cur_size) + CurByte;
            //Console.WriteLine((CurrentIndex * 2) + "+" + foo);
            temparray[(CurrentIndex*2)] = Basic.EgaToColor((File_SHAPES_EGA[foo] >> 4) & 0x0F);
            temparray[(CurrentIndex*2) + 1] = Basic.EgaToColor(File_SHAPES_EGA[foo] & 0x0F);
            CurrentIndex++;
        }
    }
}
GFX.SHAPES_EGA.SetData(temparray);

この画像は、画像読み込みコードにバグがあることを示しています。

4

1 に答える 1

1

Vertical++試してみる代わりにVertical += 16。Ultimaに親指を立てる!

于 2012-08-14T17:20:33.120 に答える