public override void SetParameter(string name, TextureResource parameter, int index) { if (parameter == null) { throw new ArgumentNullException("parameter"); } // TODO: support updatable textures Texture tex; if (parameter is Direct3D9UpdatableTexture) { tex = ((Direct3D9UpdatableTexture)parameter).InternalTexture; } else { tex = ((Direct3D9Texture)parameter).InternalTexture; } EffectHandle param = getParameter(name); _effect.SetTexture(param, tex); }
private void drawMesh(Matrix worldMatrix, Matrix viewProjMatrix, Data.Mesh mesh, D3D9.Effect effect) { Matrix worldMatrix2 = worldMatrix * mesh.Rotation * mesh.Position; Matrix worldViewProjMatrix = worldMatrix2 * viewProjMatrix; Matrix worldInverseTranspose = Matrix.Invert(worldMatrix2); worldInverseTranspose = Matrix.Transpose(worldInverseTranspose); effect.SetValue("gWorldViewProj", worldViewProjMatrix); effect.SetValue("gWorldInvTrans", worldInverseTranspose); effect.SetTexture("gDiffuseTexture", mesh.DiffuseTexture); effect.CommitChanges(); DX.Device.SetStreamSource(0, mesh.VertexBuffer, 0, mesh.VertexDeclStride); DX.Device.VertexDeclaration = mesh.VertexDecl; DX.Device.Indices = mesh.IndexBuffer; Int32 primitiveCount = mesh.IndexCount / (mesh.Primitive == D3D9.PrimitiveType.LineList ? 2 : 3); DX.Device.DrawIndexedPrimitive(mesh.Primitive, 0, 0, mesh.VertexCount, 0, primitiveCount); }