読者です 読者をやめる 読者になる 読者になる

VertexDeclarationを忘れてはいかん

XNA上のHLSLでピクセルシェーダ使って輪郭線みたいのを書こうと思っていろいろやってて、数フレに一回くらいテクスチャ座標がばたついて面がちらつくという謎挙動をするもんでHLSLのコードとにらめっこしてたんだが、原因はHLSLコードのほうじゃなくて、

  vdecl = new VertexDeclaration(graphics.GraphicsDevice,
          VertexPositionNormalTexture.VertexElements);
  gd.VertexDeclaration = vdecl;
  gd.DrawUserPrimitives<VertexPositionNormalTexture>(
              PrimitiveType.TriangleList, 1, vertices);

VertexDeclarationの設定し忘れだった。C#2.0からはDrawUserPrimitivesで型が指定できるんだから、わざわざ別プロパティで型を指定するってのは二度手間じゃないかね。なにか別の深遠な理由があるのかしらん。