   Point Sprite Clipping
  I am working on a point sprite system but from certain angles the sprites clip each other instead of being blended together, here are 2 images of this:Front SideBack side Here is the render function, its pretty much how I got the code from a book:if( !_particles.empty() ){//// set render states//preRender();g_pD3DDevice->SetTexture(0, _tex);g_pD3DDevice->SetFVF(Particle::FVF);g_pD3DDevice->SetStreamSource(0, _vb, 0, sizeof(Particle));//// render batches one by one//// start at beginning if we're at the end of the vbif(_vbOffset >= _vbSize)_vbOffset = 0;Particle* v = 0;_vb->Lock(_vbOffset    * sizeof( Particle ),_vbBatchSize * sizeof( Particle ),(void**)&v,_vbOffset ? D3DLOCK_NOOVERWRITE : D3DLOCK_DISCARD);DWORD numParticlesInBatch = 0;//// Until all particles have been rendered.//std::list<Attribute>::iterator i;for(i = _particles.begin(); i != _particles.end(); i++){if( i->_isAlive ){//// Copy a batch of the living particles to the// next vertex buffer segment//v->_position = i->_position;v->_color    = (D3DCOLOR)i->_color;v++; // next element;numParticlesInBatch++; //increase batch counter// if this batch full?if(numParticlesInBatch == _vbBatchSize) {//// Draw the last batch of particles that was// copied to the vertex buffer. //_vb->Unlock();g_pD3DDevice->DrawPrimitive(D3DPT_POINTLIST,_vbOffset,_vbBatchSize);//// While that batch is drawing, start filling the// next batch with particles.//// move the offset to the start of the next batch_vbOffset += _vbBatchSize; // don't offset into memory thats outside the vb's range.// If we're at the end, start at the beginning.if(_vbOffset >= _vbSize) _vbOffset = 0;  _vb->Lock(_vbOffset    * sizeof( Particle ),_vbBatchSize * sizeof( Particle ),(void**)&v,_vbOffset ? D3DLOCK_NOOVERWRITE : D3DLOCK_DISCARD);numParticlesInBatch = 0; // reset for new batch}}}_vb->Unlock();// its possible that the LAST batch being filled never // got rendered because the condition // (numParticlesInBatch == _vbBatchSize) would not have// been satisfied.  We draw the last partially filled batch now.if( numParticlesInBatch ){g_pD3DDevice->DrawPrimitive(D3DPT_POINTLIST,_vbOffset,numParticlesInBatch);}// next block_vbOffset += _vbBatchSize; //// reset render states//postRender();}Also here are the render states im setting in the preRender function:g_pD3DDevice->SetRenderState(D3DRS_LIGHTING, false);g_pD3DDevice->SetRenderState(D3DRS_POINTSPRITEENABLE, true);g_pD3DDevice->SetRenderState(D3DRS_POINTSCALEENABLE, true); g_pD3DDevice->SetRenderState(D3DRS_POINTSIZE, d3d::FtoDw(_size));g_pD3DDevice->SetRenderState(D3DRS_POINTSIZE_MIN, d3d::FtoDw(1.0f));// control the size of the particle relative to distanceg_pD3DDevice->SetRenderState(D3DRS_POINTSCALE_A, d3d::FtoDw(0.0f));g_pD3DDevice->SetRenderState(D3DRS_POINTSCALE_B, d3d::FtoDw(0.0f));g_pD3DDevice->SetRenderState(D3DRS_POINTSCALE_C, d3d::FtoDw(1.0f));g_pD3DDevice->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);g_pD3DDevice->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1);g_pD3DDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_ADD);g_pD3DDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, true);g_pD3DDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);    g_pD3DDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);Thanks   
  when you draw particle effects you need to check the z-buffer, but not update it.Let us know if that is not your problem or it makes no sense...   ;  yea, that was it, thanks for the help   