如果你想畫你的紋理中,你不能使用spritebatch非矩形的方式。但繪製多邊形也不難,你可以使用BasicEffect,所以你不必擔心着色器。 開始通過設置你的頂點和索引數組:
BasicEffect basicEffect = new BasicEffect(device);
basicEffect.Texture = myTexture;
basicEffect.TextureEnabled = true;
VertexPositionTexture[] vert = new VertexPositionTexture[4];
vert[0].Position = new Vector3(0, 0, 0);
vert[1].Position = new Vector3(100, 0, 0);
vert[2].Position = new Vector3(0, 100, 0);
vert[3].Position = new Vector3(100, 100, 0);
vert[0].TextureCoordinate = new Vector2(0, 0);
vert[1].TextureCoordinate = new Vector2(1, 0);
vert[2].TextureCoordinate = new Vector2(0, 1);
vert[3].TextureCoordinate = new Vector2(1, 1);
short[] ind = new short[6];
ind[0] = 0;
ind[1] = 2;
ind[2] = 1;
ind[3] = 1;
ind[4] = 2;
ind[5] = 3;
BasicEffect是偉大的一個標準的着色器,你可以用它來繪製紋理,顏色,甚至適用於照明到它。
VertexPositionTexture是如何設置頂點緩衝區。
您可以使用VertexPositionColor,如果你只想要的顏色和VertexPositionColorTexture如果你想兩者。 (用顏色着色紋理)。
的IND陣列說,在什麼順序繪製兩個三角形組成的四邊形。
然後在你的循環渲染你這樣做:
foreach (EffectPass effectPass in basicEffect.CurrentTechnique.Passes) {
effectPass.Apply();
device.DrawUserIndexedPrimitives<VertexPositionTexture>(PrimitiveType.TriangleList, vert, 0, vert.Length, ind, 0, ind.Length/3);
}
這就是它! 這是一個非常簡短的介紹,我建議你玩這個,如果你陷入困境,這裏有大量的教程和信息,谷歌是你的朋友。
如果您設置的目標矩形大於源矩形,則使用spritebatch將拉伸紋理。如果您只想渲染其中的一部分,您還可以設置不覆蓋整個紋理的源矩形。你是否需要使用textrued?或者你想達到什麼目的? –
是的,紋理也應該傾斜,這是我的問題。 – mick