Now, you may have an idea on how to move point sprites - you say, "Let's use a world transformation like we did for the meshes"! But, that is unnecessary, because point sprites have their own location. You may then say, "Well, how can we move the point sprites based on their position when that is only supplied once, when we initialize the point sprite vertices?". The answer is that we can "initialize" the point sprites at any time - merely updating their position. As an example, let's have our point sprites move in a circle. First, we need a variable that changes with the time of execution.
 ``` Dim Tick As Integer ```
And now, our moving point sprite vertices:
 ``` Private Sub SetPointSprites(ByVal vs() As CustomVertex.PositionColored, ByVal vxbf As VertexBuffer, ByVal D9 As Device) Dim N As Single = 1.0F Dim A As Array = vxbf.Lock(0, LockFlags.None) 'It returns a vanilla array... vs = DirectCast(A, CustomVertex.PositionColored()) vs(0) = New CustomVertex.PositionColored(-N * Convert.ToSingle(Math.Cos(Tick / 75)), -N * Convert.ToSingle(Math.Sin(Tick / 75)), 1.0F, &HFFFFFFFF) vs(1) = New CustomVertex.PositionColored(-N * Convert.ToSingle(Math.Sin(Tick / 75)), N * Convert.ToSingle(Math.Cos(Tick / 75)), 1.0F, &HFFFFFFFF) vs(2) = New CustomVertex.PositionColored(N * Convert.ToSingle(Math.Sin(Tick / 75)), -N * Convert.ToSingle(Math.Cos(Tick / 75)), 1.0F, &HFFFFFFFF) vs(3) = New CustomVertex.PositionColored(N * Convert.ToSingle(Math.Cos(Tick / 75)), N * Convert.ToSingle(Math.Sin(Tick / 75)), 1.0F, &HFFFFFFFF) vxbf.Unlock() End Sub```
And now, we call this subroutine before we begin streaming vertices from the vertexbuffer:
 ``` D9.RenderState.ZBufferWriteEnable = False D9.RenderState.PointSpriteEnable = True Me.SetPointSprites(Spots, PsB, D9) D9.SetStreamSource(0, PsB, 0) D9.VertexFormat = CustomVertex.PositionColored.Format D9.SetTexture(0, PsTx) 'Sets the active texture. The 0 is up for discussion. D9.DrawPrimitives(PrimitiveType.PointList, 0, 4) D9.RenderState.ZBufferWriteEnable = True D9.RenderState.PointSpriteEnable = False```
Now, we have some moving point sprites.
For transparent point sprites, we just put a texture with transparencies in place of the texture that we used to use.
 ``` PsTx = TextureLoader.FromFile(D9, Application.StartupPath & "\coridras2.bmp", 64, 64, 0, 0, Format.A8B8G8R8, Pool.Managed, Filter.Linear, Filter.None, &HFF00FF00) ```
The part that does the transparency is the &HFF00FF00 part, which specifices that green is to be transparent. Since this is the first time that we have drawn transparency, we need to set the appropriate renderstates so that transparency is realized.
 ``` 'Enable alphablending, which is transparency. D9.RenderState.AlphaBlendEnable = True 'When drawing something with X transparency, all of the transparency from the source is made transparent. D9.RenderState.SourceBlend = Blend.SourceAlpha 'And then, when transparency is drawn onto something else, the destination color is attenuated (interpolated) 'to the source color by the transparency amount D9.RenderState.DestinationBlend = Blend.InvSourceAlpha```

.vb file