0

頂点データの (x,y) 位置に Short2 を使用すると問題が発生します。これは私の頂点構造です:

struct VertexPositionShort : IVertexType
{
    private static VertexElement[]
        vertexElements = new VertexElement[]
        {
            new VertexElement(0, VertexElementFormat.Short2, VertexElementUsage.Position, 0),
        };
    private static VertexDeclaration
        vertexDeclaration = new VertexDeclaration(vertexElements);

    public Short2
        Position;


    public static VertexDeclaration Declaration
    {
        get { return new VertexDeclaration(vertexElements); }
    }

    VertexDeclaration IVertexType.VertexDeclaration
    {
        get { return new VertexDeclaration(vertexElements); }
    }
}

WP7エミュレーターを使用すると、この構造を使用すると何も描画されません-アーティファクトも何もありません! ただし、Short2 構造体が Vector2 に置き換えられた同一の構造体を使用すると、すべてが完全に機能します。

これがエミュレーター固有の問題であることへの言及を見つけました。の整数データ形式は、エミュレーターの色、位置、テクスチャ座標などの他のシェーダー入力チャネルには使用できません。」(http://www.softpedia.com/progChangelog/Windows-Phone-Developer-Tools-Changelog-154611.html) ただし、これは 2010 年 7 月のものであり、この制限は今では修正されていると思います...? 残念ながら、テストするデバイスがありません。

これがまだエミュレーターの問題であることを確認したり、これが機能しない別の理由を指摘したりできますか?

4

1 に答える 1

0

Shawn Hargreaves 氏による解決: 「頂点データで Short2 を使用できますが、これは整数型であるため、浮動小数点入力ではなく整数を受け入れるように頂点シェーダーを作成する必要があります。BasicEffect は浮動小数点数を取るため、Short2 は動作しません。 NormalizedShort2 の方が良い選択ではないでしょうか?」

http://blogs.msdn.com/b/shawnhar/archive/2010/11/19/compressed-vertex-data.aspx

WP7 エミュレーターと実際のデバイスの両方で、NormalizedShort2 が実際に位置データに対して機能することを確認できます。

ありがとう、ショーン!

于 2012-06-22T13:00:33.263 に答える