public static SlimDX.Matrix?DeserializeMatrix(string XMLString) { var xe = XElement.Parse(XMLString); if (xe.Name != "Matrix") { return(null); } else { SlimDX.Matrix mtr = new SlimDX.Matrix(); mtr.M11 = float.Parse((xe.Nodes().First((x) => (x as XElement).Name == "M11") as XElement).Value); mtr.M12 = float.Parse((xe.Nodes().First((x) => (x as XElement).Name == "M12") as XElement).Value); mtr.M13 = float.Parse((xe.Nodes().First((x) => (x as XElement).Name == "M13") as XElement).Value); mtr.M14 = float.Parse((xe.Nodes().First((x) => (x as XElement).Name == "M14") as XElement).Value); mtr.M21 = float.Parse((xe.Nodes().First((x) => (x as XElement).Name == "M21") as XElement).Value); mtr.M22 = float.Parse((xe.Nodes().First((x) => (x as XElement).Name == "M22") as XElement).Value); mtr.M23 = float.Parse((xe.Nodes().First((x) => (x as XElement).Name == "M23") as XElement).Value); mtr.M24 = float.Parse((xe.Nodes().First((x) => (x as XElement).Name == "M24") as XElement).Value); mtr.M31 = float.Parse((xe.Nodes().First((x) => (x as XElement).Name == "M31") as XElement).Value); mtr.M32 = float.Parse((xe.Nodes().First((x) => (x as XElement).Name == "M32") as XElement).Value); mtr.M33 = float.Parse((xe.Nodes().First((x) => (x as XElement).Name == "M33") as XElement).Value); mtr.M34 = float.Parse((xe.Nodes().First((x) => (x as XElement).Name == "M34") as XElement).Value); mtr.M41 = float.Parse((xe.Nodes().First((x) => (x as XElement).Name == "M41") as XElement).Value); mtr.M42 = float.Parse((xe.Nodes().First((x) => (x as XElement).Name == "M42") as XElement).Value); mtr.M43 = float.Parse((xe.Nodes().First((x) => (x as XElement).Name == "M43") as XElement).Value); mtr.M44 = float.Parse((xe.Nodes().First((x) => (x as XElement).Name == "M44") as XElement).Value); return(mtr); } }
private static SlimDX.Matrix EM2DXM(Matrix from) { SlimDX.Matrix to = new SlimDX.Matrix(); to.M11 = from.element[0, 0]; to.M12 = from.element[1, 0]; to.M13 = from.element[2, 0]; to.M14 = from.element[3, 0]; to.M21 = from.element[0, 1]; to.M22 = from.element[1, 1]; to.M23 = from.element[2, 1]; to.M24 = from.element[3, 1]; to.M31 = from.element[0, 2]; to.M32 = from.element[1, 2]; to.M33 = from.element[2, 2]; to.M34 = from.element[3, 2]; to.M41 = from.element[0, 3]; to.M42 = from.element[1, 3]; to.M43 = from.element[2, 3]; to.M44 = from.element[3, 3]; return(to); }
private void RenderNode(SceneGraph Node, Camera Camera, SlimDX.Matrix ProjMatrix, int indexOffset, int vertexOffset, out int indicesConsumed, out int verticesConsumed) { var ic = indexOffset; var vc = vertexOffset; if (Node.Renderable != null) { WorldViewProj = Node.WorldTransform * Camera.GetViewMatrix() * ProjMatrix; CPO_WorldViewProj.SetMatrix(WorldViewProj); int nIndices = Node.Renderable.GetIndexList(EffectName()).Length; int nVerts = Node.Renderable.GetVertexList(EffectName()).Length; // TODO KAM: This is horribly inefficient, change this! ImmediateContext.DrawIndexed(nIndices, indexOffset, vertexOffset); ic += nIndices; vc += nVerts; } foreach (var Child in Node.Children) { int cic, cvc; RenderNode(Child.Value, Camera, ProjMatrix, indexOffset + ic, vertexOffset + vc, out cic, out cvc); ic += cic; vc += cvc; } indicesConsumed = ic; verticesConsumed = vc; }
public override void Render(Device device, SlimDX.Matrix viewMatrix) { var globals = new VertexShaderGlobals(); globals.World = SlimDX.Matrix.Identity; globals.WorldViewProj = viewMatrix; this._VertexShaderConstantBuffer1.Update(globals); device.InputAssembler.SetPrimitiveTopology(PrimitiveTopology.TriangleList); device.VertexShader.Set(this._ShaderLoader.VertexShader); device.VertexShader.SetConstantBuffer(this._VertexShaderConstantBuffer1.Buffer, 1); device.PixelShader.Set(this._ShaderLoader.PixelShader); this._MaterialLoader.SetShaderResource(device); device.InputAssembler.SetInputLayout(this._ShaderLoader.InputLayout); if (this.Block.Unknown28 == 0) { device.InputAssembler.SetVertexBuffers(0, new VertexBufferBinding(this._VertexData0Buffer, 40, 0)); } else if (this.Block.Unknown28 == 1) { device.InputAssembler.SetVertexBuffers(0, new VertexBufferBinding(this._VertexData0Buffer, 28, 0)); } device.InputAssembler.SetIndexBuffer(this._IndexBuffer, DXGI.Format.R16_UInt, 0); device.DrawIndexed(this.Block.Faces.Count, 0, 0); }
private static Matrix DXM2EM(SlimDX.Matrix from) { Matrix to = new Matrix(); to.element[0, 0] = from.M11; to.element[1, 0] = from.M12; to.element[2, 0] = from.M13; to.element[3, 0] = from.M14; to.element[0, 1] = from.M21; to.element[1, 1] = from.M22; to.element[2, 1] = from.M23; to.element[3, 1] = from.M24; to.element[0, 2] = from.M31; to.element[1, 2] = from.M32; to.element[2, 2] = from.M33; to.element[3, 2] = from.M34; to.element[0, 3] = from.M41; to.element[1, 3] = from.M42; to.element[2, 3] = from.M43; to.element[3, 3] = from.M44; return(to); }
public void Evaluate(int SpreadMax) { IConstraintContainer inputWorld = this.contraintContainer[0]; if (inputWorld != null) { this.persister.UpdateWorld(inputWorld); for (int i = 0; i < SpreadMax; i++) { if (FCreate[i]) { RigidBody body = FBody[i]; if (body != null) { SlimDX.Matrix m = this.FFrame[i]; SliderConstraint cst = new SliderConstraint(body, *(BulletSharp.Matrix *) & m, true); cst.LowerLinLimit = this.FLinearLimit[i].X; cst.UpperLinLimit = this.FLinearLimit[i].Y; cst.LowerAngularLimit = this.FAngularLimit[i].X * (float)Math.PI * 2.0f; cst.UpperAngularLimit = this.FAngularLimit[i].Y * (float)Math.PI * 2.0f; cst.DebugDrawSize = 5.0f; this.persister.Append(cst); } } } this.persister.Flush(); } else { this.constraintsOutput.SliceCount = 0; } }
public ConstantBuffer(SlimDX.Direct3D11.Device device) { _device = device; sizeInBytes = 4 * 4 * sizeof(float) * 2 + 4 * sizeof(float) * 3 + sizeof(float) * (4 + 4 + 4); BufferDescription constBufferDescription = new BufferDescription(); constBufferDescription.Usage = ResourceUsage.Default; constBufferDescription.SizeInBytes = sizeInBytes; constBufferDescription.BindFlags = BindFlags.ConstantBuffer; constBufferDescription.CpuAccessFlags = CpuAccessFlags.None; _constBuffer = new SlimDX.Direct3D11.Buffer(device, constBufferDescription); _wasChanged = true; _world = SlimDX.Matrix.Identity; _view = SlimDX.Matrix.Identity; _projection = SlimDX.Matrix.Identity; _material = new Material(new SlimDX.Vector4(0.6f, 0.6f, 0.6f, 1.0f), new SlimDX.Vector4(1.0f, 1.0f, 1.0f, 1.0f), new SlimDX.Vector4(0.0f, 0.0f, 0.0f, 1.0f)); _lightDirection = new SlimDX.Vector4(0.0f, 0.0f, 1.0f, 1.0f); _ambientLight = new SlimDX.Vector4(0.1f, 0.1f, 0.1f, 1.0f); _cameraPosition = new SlimDX.Vector4(0.0f, 0.0f, -1.0f, 1.0f); }
public override void Render(SlimDX.Direct3D10.Device device, SlimDX.Matrix viewMatrix) { /* * VertexBuffer vertices; * * device.VertexDeclaration = this.VertexDeclaration; * vertices = new VertexBuffer( * device, * block.Vertices.Count * 32, * BufferUsage.WriteOnly); * vertices.SetData(block.Vertices.ToArray()); * * device.Vertices[0].SetSource(vertices, 0, 32); * * var indices = new IndexBuffer( * device, * typeof(short), * block.Faces.Count, * BufferUsage.WriteOnly); * indices.SetData(block.Faces.ToArray(), 0, block.Faces.Count); * device.Indices = indices; * * device.Textures[0] = this.TextureDif; * device.Textures[1] = this.TextureNrm; // not "working" yet (needs shader~) * * device.DrawIndexedPrimitives(PrimitiveType.TriangleList, 0, 0, block.Faces.Count, 0, block.Faces.Count / 3); */ }
public static Microsoft.Xna.Framework.Matrix xna(this SlimDX.Matrix v) { return(new Microsoft.Xna.Framework.Matrix(v.M11, v.M12, v.M13, v.M14, v.M21, v.M22, v.M23, v.M24, v.M31, v.M32, v.M33, v.M34, v.M41, v.M42, v.M43, v.M44)); }
public TouchObject(int index, SlimDX.Matrix trans) { sliceIndex = index; initialTransform = trans; objectTransform = trans; hitIds = new List <TouchFinger>(); }
public int Update(List <TouchFinger> allFingers, Vector2D scaleLimit) { //clean list (check if touches still exist) cleanList(allFingers); //check how many fingers are still on list and perform actions //TRANSLATE if (hitIds.Count == 1) { SlimDX.Vector2 delta = hitIds.First().touchPosition - hitIds.First().lastPosition; objectTransform = objectTransform * SlimDX.Matrix.Translation(delta.X, delta.Y, 0); return(1); } //SCALE AND ROTATE if (hitIds.Count > 1) { //SCALE float sx = new SlimDX.Vector3(objectTransform.M11, objectTransform.M12, objectTransform.M13).Length(); float sy = new SlimDX.Vector3(objectTransform.M21, objectTransform.M22, objectTransform.M23).Length(); //previous distance float pd = (float)new Vector2D((hitIds.Last().lastPosition.X - hitIds.First().lastPosition.X), (hitIds.Last().lastPosition.Y - hitIds.First().lastPosition.Y)).Length; //current distance float cd = (float)new Vector2D((hitIds.Last().touchPosition.X - hitIds.First().touchPosition.X), (hitIds.Last().touchPosition.Y - hitIds.First().touchPosition.Y)).Length; float scaleFactor = cd - pd; float fscale = 1; if (scaleLimit.x < sx + scaleFactor && sx + scaleFactor < scaleLimit.y && scaleLimit.x < sy + scaleFactor && sy + scaleFactor < scaleLimit.y) { fscale += scaleFactor; } //ROTATION //previous angle double pa = Math.Atan2(hitIds.Last().lastPosition.Y - hitIds.First().lastPosition.Y, hitIds.Last().lastPosition.X - hitIds.First().lastPosition.X); //current angle double ca = Math.Atan2(hitIds.Last().touchPosition.Y - hitIds.First().touchPosition.Y, hitIds.Last().touchPosition.X - hitIds.First().touchPosition.X); double da = ca - pa; //Final matrices SlimDX.Matrix scale = SlimDX.Matrix.Scaling(fscale, fscale, 1); SlimDX.Matrix rot = SlimDX.Matrix.RotationZ((float)da); SlimDX.Vector3 srcPos = new SlimDX.Vector3(objectTransform.M41, objectTransform.M42, 0); //Translate to origin objectTransform.M41 = 0; objectTransform.M42 = 0; //rotate scale and translate back to srcpos objectTransform = objectTransform * rot * scale * SlimDX.Matrix.Translation(srcPos); return(2); } return(0); }
public static string MatrixToString(SlimDX.Matrix matrix) { return (matrix.M11.ToString("00.0") + ", " + matrix.M12.ToString("00.0") + ", " + matrix.M13.ToString("00.0") + ", " + matrix.M14.ToString("00.0") + "\n" + matrix.M21.ToString("00.0") + ", " + matrix.M22.ToString("00.0") + ", " + matrix.M23.ToString("00.0") + ", " + matrix.M24.ToString("00.0") + "\n" + matrix.M31.ToString("00.0") + ", " + matrix.M32.ToString("00.0") + ", " + matrix.M33.ToString("00.0") + ", " + matrix.M34.ToString("00.0") + "\n" + matrix.M41.ToString("00.0") + ", " + matrix.M42.ToString("00.0") + ", " + matrix.M43.ToString("00.0") + ", " + matrix.M44.ToString("00.0") + "\n"); }
public void Write(SlimDX.Matrix data) { unsafe { SlimDX.Matrix *pPtr = &data; Write((IntPtr)pPtr, sizeof(SlimDX.Matrix)); } }
public void Begin(SlimDX.Matrix vp, DX11RenderState shapes, DX11RenderState aabb) { this.shapesRenderState = shapes != null ? shapes : this.defaultRenderState; this.aabbRenderState = aabb != null ? aabb : this.shapesRenderState; this.solidColorShader.ApplyCamera(vp); context.RenderStateStack.Push(shapesRenderState); context.CleanShaderStages(); }
public Camera() { Position = new SlimDX.Vector3(0.0f, 0.0f, -5.0f); right = new SlimDX.Vector3(1.0f, 0.0f, 0.0f); up = new SlimDX.Vector3(0.0f, 1.0f, 0.0f); forward = new SlimDX.Vector3(0.0f, 0.0f, 1.0f); speed = 2.0f; View = SlimDX.Matrix.Identity; }
public static PhysX.Math.Matrix AsPhysX(this SlimDX.Matrix m) { return(new Math.Matrix ( m.M11, m.M12, m.M13, m.M14, m.M21, m.M22, m.M23, m.M24, m.M31, m.M32, m.M33, m.M34, m.M41, m.M42, m.M43, m.M44 )); }
public void Draw(SlimDX.Matrix transform, bool noShader = false) { lock (mGroups) { foreach (var group in mGroups) { group.RenderGroup(transform, noShader); } } }
public override void RenderADT(SlimDX.Matrix preTransform) { lock (mChunks) { foreach (var chunk in mChunks) { chunk.Render(preTransform); } } }
public static bool IsWmoHit(out WMOHitInformation info, out SlimDX.Vector3 hitPos) { info = null; bool hasHit = false; uint uniqueId = 0; uint refId = 0; hitPos = SlimDX.Vector3.Zero; SlimDX.Matrix modelMatrix = SlimDX.Matrix.Identity; WMOFile hitFile = null; WMORender renderer = null; uint instanceID = 0; lock (lockobj) { float curNear = 99999; foreach (var rndr in mRenders) { float curHit = 0; uint curInst = 0; uint curRef = 0; SlimDX.Vector3 pos; SlimDX.Matrix tmpMatrix; uint tmpId = 0; if (rndr.Value.IsInstanceHit(out curHit, out curInst, out curRef, out pos, out tmpMatrix, out tmpId)) { hasHit = true; if (curHit < curNear) { curNear = curHit; uniqueId = curInst; refId = curRef; hitPos = pos; modelMatrix = tmpMatrix; hitFile = rndr.Value.File; renderer = rndr.Value; instanceID = tmpId; } } } } if (hasHit) { info = ADT.ADTManager.GetWmoInformation(uniqueId, refId); info.HitPoint = hitPos; info.ModelMatrix = modelMatrix; info.Model = hitFile; info.Renderer = renderer; info.InstanceID = instanceID; } return(hasHit); }
public override void RenderADT(SlimDX.Matrix preTransform) { if (loadFinished == false) { return; } foreach (var chunk in mChunks) { chunk.Render(); } }
public static SlimDX.Matrix ToSlimDXMatrix(this OpenTK.Matrix4 matrix) { var matrixDX = new SlimDX.Matrix(); for (int row = 0; row < 4; row++) { for (int column = 0; column < 4; column++) { matrixDX[row, column] = matrix[row, column]; } } return matrixDX; }
public bool IsPositionIn(SlimDX.Vector3 pos, SlimDX.Matrix invMat) { var triggerSpacePos = SlimDX.Vector3.TransformCoordinate(pos, invMat); if ((Math.Abs(triggerSpacePos.X) < (0.5f)) && //(Math.Abs(triggerSpacePos.Y) < (0.5f)) && (Math.Abs(triggerSpacePos.Z) < (0.5f))) { return(true); } return(false); }
public static SlimDX.Matrix ToSlimDXMatrix(this OpenTK.Matrix4 matrix) { var matrixDX = new SlimDX.Matrix(); for (int row = 0; row < 4; row++) { for (int column = 0; column < 4; column++) { matrixDX[row, column] = matrix[row, column]; } } return(matrixDX); }
/// <summary> /// Sets the Transform. /// </summary> /// <param name="matrix">The Matrix.</param> public void SetTransform(Matrix2x3 matrix) { Matrix m = Matrix.Identity; m.M12 = matrix[1, 0]; m.M21 = matrix[0, 1]; m.M11 = matrix[0, 0]; m.M22 = matrix[1, 1]; m.M33 = 1f; m.M41 = matrix.OffsetX; m.M42 = matrix.OffsetY; m.M43 = 0; _sprite.Transform = m; }
protected override SliderConstraint CreateConstraint(RigidBody body, int slice) { SlimDX.Matrix m = this.FMatrix[slice]; SliderConstraint cst = new SliderConstraint(body, *(BulletSharp.Matrix *) & m, FLinearRef[slice]) { LowerLinLimit = -15.0f, UpperLinLimit = -5.0f, //LowerLinearLimit = -10.0f, //UpperLinearLimit = -10.0f, LowerAngularLimit = -(float)Math.PI / 3.0f, UpperAngularLimit = (float)Math.PI / 3.0f, }; return(cst); }
void RenderStaticPlaneShape(Mesh mesh) { Cull cullMode = device.GetRenderState <Cull>(RenderState.CullMode); device.SetRenderState(RenderState.CullMode, Cull.None); planeShader.Begin(); Matrix matrix = device.GetTransform(TransformState.World); planeShader.SetValue("World", matrix); matrix = device.GetTransform(TransformState.View) * device.GetTransform(TransformState.Projection); planeShader.SetValue("ViewProjection", matrix); planeShader.BeginPass(0); mesh.DrawSubset(0); planeShader.EndPass(); planeShader.End(); device.SetRenderState(RenderState.CullMode, cullMode); }
private void SetOrthoProjection() { SlimDX.Matrix orthoProj = SlimDX.Matrix.OrthoOffCenterRH( mCoords.Left, mCoords.Right, mCoords.Bottom, mCoords.Top, -1, 1); // TODO: figure out why this method sometimes gets called when mDevice is null? if (mDevice != null) { try { mDevice.SetTransform(TransformState.Projection, orthoProj); } catch (NullReferenceException e) { System.Diagnostics.Debug.Print("NullReferenceException when setting transformation."); } } }
public void Matrix_Conversion_ToMath() { var slimDXMatrix = new SlimDXMatrix { M11 = 11, M12 = 12, M13 = 13, M14 = 14, M21 = 21, M22 = 22, M23 = 23, M24 = 24, M31 = 31, M32 = 32, M33 = 33, M34 = 34, M41 = 41, M42 = 42, M43 = 43, M44 = 44 }; Matrix matrix = slimDXMatrix.ToMath(); Assert.AreEqual(slimDXMatrix.M11, matrix.R1C1); Assert.AreEqual(slimDXMatrix.M12, matrix.R1C2); Assert.AreEqual(slimDXMatrix.M13, matrix.R1C3); Assert.AreEqual(slimDXMatrix.M14, matrix.R1C4); Assert.AreEqual(slimDXMatrix.M21, matrix.R2C1); Assert.AreEqual(slimDXMatrix.M22, matrix.R2C2); Assert.AreEqual(slimDXMatrix.M23, matrix.R2C3); Assert.AreEqual(slimDXMatrix.M24, matrix.R2C4); Assert.AreEqual(slimDXMatrix.M31, matrix.R3C1); Assert.AreEqual(slimDXMatrix.M32, matrix.R3C2); Assert.AreEqual(slimDXMatrix.M33, matrix.R3C3); Assert.AreEqual(slimDXMatrix.M34, matrix.R3C4); Assert.AreEqual(slimDXMatrix.M41, matrix.R4C1); Assert.AreEqual(slimDXMatrix.M42, matrix.R4C2); Assert.AreEqual(slimDXMatrix.M43, matrix.R4C3); Assert.AreEqual(slimDXMatrix.M44, matrix.R4C4); }
public void Transform(SlimDX.Matrix rotation) { SlimDX.Vector4 coords = SlimDX.Vector4.Transform(new SlimDX.Vector4(X, Y, Z, 1.0f), rotation); SlimDX.Vector4 normals = SlimDX.Vector4.Transform(new SlimDX.Vector4(NX, NY, NZ, 1.0f), rotation); X = coords.X; Y = coords.Y; Z = coords.Z; NX = normals.X; NY = normals.Y; NZ = normals.Z; if (Math.Abs((float)Math.Sqrt(NX * NX + NY * NY + NZ * NZ) - 1.0f) > 1e-3) { throw new ApplicationException( "Internal error: rotation matrix also performs translation and/or scaling"); } }
public void Render(SceneGraph SceneGraph, Camera Camera, SlimDX.Matrix ProjMatrix) { // Set input assembler information... ImmediateContext.InputAssembler.InputLayout = InputLayout; // TODO KAM: Shouldn't the primitive topology be set by the objects being rendered themselves? ImmediateContext.InputAssembler.PrimitiveTopology = PrimitiveTopology.TriangleList; // Build our vertex and index buffer... var verts = GetAllVertices(SceneGraph); var indices = GetAllIndices(SceneGraph); var vertBufferDesc = new BufferDescription(TestEffectVertex.Stride * verts.Length, ResourceUsage.Default, BindFlags.VertexBuffer, CpuAccessFlags.None, ResourceOptionFlags.None, 0); Util.ReleaseCom(ref VertexBuffer); // TODO KAM: Make this dirtyable instead VertexBuffer = new SlimDX.Direct3D11.Buffer(Device, new SlimDX.DataStream(verts, true, false), vertBufferDesc); var indexBuferDesc = new BufferDescription( sizeof(uint) * indices.Length, ResourceUsage.Default, BindFlags.IndexBuffer, CpuAccessFlags.None, ResourceOptionFlags.None, 0 ); Util.ReleaseCom(ref IndexBuffer); IndexBuffer = new SlimDX.Direct3D11.Buffer(Device, new SlimDX.DataStream(indices, false, false), indexBuferDesc); // Set our vertex and index buffers ImmediateContext.InputAssembler.SetVertexBuffers(0, new VertexBufferBinding(VertexBuffer, TestEffectVertex.Stride, 0)); ImmediateContext.InputAssembler.SetIndexBuffer(IndexBuffer, SlimDX.DXGI.Format.R32_UInt, 0); // Go through, render all nodes var renderPass = EffectTechnique.GetPassByIndex(0); renderPass.Apply(ImmediateContext); int a, b; RenderNode(SceneGraph, Camera, ProjMatrix, 0, 0, out a, out b); }
/// <summary> /// Creates the local and world transform matrices for the bone /// </summary> public void CreateMatrices() { // creates the individual matrix components SlimDX.Matrix scale_matrix = SlimDX.Matrix.Scaling(scaleAmount, scaleAmount, scaleAmount); SlimDX.Matrix rotate_matrix = SlimDX.Matrix.RotationQuaternion(rotationQuaternion); SlimDX.Matrix translate_matrix = SlimDX.Matrix.Translation(translationVector); TransformMatrixLocal = SlimDX.Matrix.Identity; // multiply the matrices together TransformMatrixLocal *= scale_matrix; TransformMatrixLocal *= rotate_matrix; TransformMatrixLocal *= translate_matrix; // multiply by the parents world matrix (if present) to get this bones world matrix TransformMatrixWorld = TransformMatrixLocal; if (ParentNode != null) { TransformMatrixWorld = TransformMatrixLocal * ParentNode.TransformMatrixWorld; } }
/// <summary> /// Create our test RenderEffect. /// </summary> /// <param name="Device"></param> public TestEffect(Device Device) { this.Device = Device; ImmediateContext = Device.ImmediateContext; // Compile our shader... string compileErrors; var compiledShader = SlimDX.D3DCompiler.ShaderBytecode.CompileFromFile ( "../../Effects/TestEffect/TestEffect.fx", null, "fx_5_0", SlimDX.D3DCompiler.ShaderFlags.None, SlimDX.D3DCompiler.EffectFlags.None, null, null, out compileErrors ); if (compileErrors != null && compileErrors != "") { throw new EffectBuildException(compileErrors); } Effect = new Effect(Device, compiledShader); EffectTechnique = Effect.GetTechniqueByName("TestTechnique"); var vertexDesc = new[] { new InputElement("POSITION", 0, SlimDX.DXGI.Format.R32G32B32_Float, 0, 0, InputClassification.PerVertexData, 0), new InputElement("COLOR", 0, SlimDX.DXGI.Format.R32G32B32A32_Float, 12, 0, InputClassification.PerVertexData, 0) }; WorldViewProj = SlimDX.Matrix.Identity; CPO_WorldViewProj = Effect.GetVariableByName("gWorldViewProj").AsMatrix(); InputLayout = new InputLayout(Device, EffectTechnique.GetPassByIndex(0).Description.Signature, vertexDesc); Util.ReleaseCom(ref compiledShader); }
/// <summary> /// Draws a Texture. /// </summary> /// <param name="spriteSheet">The SpriteSheet.</param> /// <param name="rectangle">The Rectangle.</param> /// <param name="color">The Color.</param> /// <param name="opacity">The Opacity.</param> public void DrawTexture(SpriteSheet spriteSheet, Rectangle rectangle, Color color, float opacity = 1) { var dxTexture = spriteSheet.Texture2D as DirectXTexture; if (dxTexture == null) { throw new ArgumentException("DirectX9 expects a DirectXTexture as resource."); } //calc percentages for scaling float scaleX = rectangle.Width / spriteSheet.Rectangle.Width; float scaleY = rectangle.Height / spriteSheet.Rectangle.Height; _sprite.Transform = Matrix.Scaling(scaleX, scaleY, 1f); _sprite.Draw(dxTexture.GetTexture(), DirectXHelper.ConvertToWinRectangle(spriteSheet.Rectangle), null, DirectXHelper.ConvertVector3(new Vector2(rectangle.X / scaleX, rectangle.Y / scaleY)), DirectXHelper.ConvertColor(color)); _sprite.Transform = Matrix.Identity; }
public static SlimDX.Matrix ToSlimDX(this Math.Matrix matrix) { var result = new SlimDX.Matrix { M11 = matrix.R1C1, M12 = matrix.R1C2, M13 = matrix.R1C3, M14 = matrix.R1C4, M21 = matrix.R2C1, M22 = matrix.R2C2, M23 = matrix.R2C3, M24 = matrix.R2C4, M31 = matrix.R3C1, M32 = matrix.R3C2, M33 = matrix.R3C3, M34 = matrix.R3C4, M41 = matrix.R4C1, M42 = matrix.R4C2, M43 = matrix.R4C3, M44 = matrix.R4C4 }; return result; }
public TransformComponent(Entity entity) : base(entity) { matrix = SlimDX.Matrix.Identity; }