[SOURCE][maxvertexcount(1)] //max number of output points per primitivevoid GSGenerateParticles(triangle VS_INPUT input[3], inout PointStream<PS_INPUT> PStream){PS_INPUT output;//lots of calculations...output.Pos = input[0].Pos;output.Norm = faceNormal;output.Col = input[0].Col; PStream.Append(output);}[/SOURCE]
To solve your depth buffer problem you have to create a 2D Texture with a depth format. Then create a depth stencil view. Set it together with your render target view. Finally you will need a depth stencil state object that has to be set to the output merger.
I have some code for this but I am not on my vista system at the moment.