コード例 #1
0
ファイル: Direct3D9Effect.cs プロジェクト: shff/gk3tools
        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);
        }
コード例 #2
0
ファイル: FormViewer3D.cs プロジェクト: Sadral/TRRM
        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);
        }