Loop list and create two triangles for each particle in a vertex buffer. (in this stage the created triangles are in right position with right rotation)copy vertexBuffer every frame.

This gives me sooooooo pooor performance.

I have an 8800GTX card and can only render 150 Particles... come on ... 150 particles before it start lagging. Must be somethign big problem with my code.

Here is my Particle class, it is Simple and i have tried to comment every function.Please let me know if you see something bad.

Another thing is how come the movement is "slow" when particles are visible, i count everything with DeltaTime so shouldent it lag, but the movement/velocity of my player the same even if there is too much drawn on scene?

First, it seems like you have 1150 particles, not 150. Still, that shouldn't be all too slow.. how much is it lagging?

Make sure you compile in Release, not Debug, and move those things you commented yourself outside the loop.
Then switch to only creating 4 vertices per quad instead of 6, but still use 6 indices. Indices can re-use vertices, so you only need 4 vertices and indices [0, 1, 2] and [0, 2, 3] for example, to make 2 triangles. This saves you some bandwidth.

If it's still not good enough, look into using a geometry shader, which can save you a lot of CPU time.

HodgeMan:
Can you please define "lag"; do you mean that the time per frame increases?
Have you timed UpdateParticles to see how much CPU time it's consuming?

My lag is like this:
I move my camera with a velocityVector lets say (0,0,0.001f*deltaTime)
Without particles it feels like i am moving "fast".
But with all particles i am moving "slow" but the velocity vector is still the same.
I have not times by Particles, dont know how.

Erik Rufelt:
1150 particles, correct my misstake.
I also forgot to mention i do a RenderTo Texture and use that texture to map a cube.
So i render everything twice so that should cut my performance in 50% but i still think it is to slow.
The only thing i draw is a 1500 verticies model and my Particles + Cube.

I think Indicies performance upgrade is next thing to look into, but i still think it is something wrong.
My plan is to draw at least 10 more 1000 vertices models in my level.

Try displaying deltaTime on the screen, and measure the difference in milliseconds. If you compare drawing 1000 particles to not drawing anything at all, then it should be much slower. Even something that is very fast is infinitely slower than something that takes zero time. Drawing nothing is close to zero.
If you aim for 60 frames per second, that gives you a max deltaTime of ~16.5 milliseconds, so compare the time taken to draw 1000 particles to that, and see how many percent of the target time is spent.

We need some numbers. Get the free version of fraps to display the FPS at least or best to incorporate some kind of time measurement in your code.

Do you send the particles in a single batch to the GPU or are you using a batch for each particle ? The latter will most likely slow down your performance even for only 1150 particles. An other issue would be to paint 1150 large particles, which could result in an huge overdraw rate, an other reason for a slow down.

When i have 1500 particles at the beginning at the same place (0,0,0) and player real close to them my FPS is down to 14FPS.
But when i shoot them away and they are away from the player i get around 250~400 fps.
when the particles are far far away i get as high as 550 fps.

That's normal enough - you're getting heavy overdraw and bottlenecking on fillrate here. Probably covering a good-ish percentage of the entire screen area 1500 times which will bring any GPU to it's knees.

It appears that the gentleman thought C++ was extremely difficult and he was overjoyed that the machine was absorbing it; he understood that good C++ is difficult but the best C++ is well-nigh unintelligible.

Whether it's faster or not is hard to say. As your problem is clearly fillrate, and your card is a few years old, there might not be all too much that you can do, other than making the particles smaller on the screen.

papulko, using a Geometry Shader is clearly my next step. When the game is finishes i might "upgrade" that part. It seems really nice to render all particles on the GPU.

Erik, color.a == 0 check looks like a good way to sort this out.

I will definently try to to use only a triangle with texture coords so that my texture is in the middle, because of my transparacy i really dont need a quad if my texture fits inside my triangle! This is really smart!

Correct me if i am wrong, but if i render all my triangles with different positions, i won¨t gain any performance of index-buffer becuase all my vertex will be on seperate places i guess? right?

Probably only update the alive ones..
However, in your case this is most likely irrelevant. As you get high FPS when particles are far away, your vertices are not limiting your performance. Because of this both index-buffers and geometry shaders will gain very little.

Using triangles instead of quads could be better or worse, and you probably want to use like 8-corner polygons or something. Look again at the page I linked. The only thing that matters for you is how many Pixels are covered on the screen. If you use 10 vertices to cover 80% as many pixels, then that is a win.

As your performance is much worse when your particles are close, it means that step 1 is cheap for you and doesn't matter very much. Index-buffers and geometry shaders improve step 1 to be even better. If you get 500 FPS when particles are far away and 14 FPS when particles are close, that gives approximately:
Step 1: 2 milliseconds
Step 2: 70 milliseconds

That means if you make step 1 twice as fast, your FPS close will still be close to 14. So it does not matter much at all.
If you make Step 2 twice as fast, that makes a much larger difference, even if Step 1 gets slower by increasing the vertex count. So choose vertices so that you cover the least number of pixels, if you want many particles covering a large number of pixels on the screen.

However, no matter what you do it is likely impossible to get 1000 particles covering a large part of the screen on your graphics card, it's simply too many pixels. You have to make your particles a bit smaller or draw fewer particles when they get close. If you have 1000 particles very close to the screen, most won't be visible, so you can maybe sort them and remove those behind others or similar.

Another fairly easy thing you can do is when particles get closer and take up large portions of the screen, you can automatically fade them out, until the point where you don't draw them anymore. Of course this decision has to be made in the vertex shader (or earlier) to avoid the pixel shading cost.