void Tristrip::Render(IDirect3DDevice9* dev) { // Create buffer on demand if (buffer == NULL) { dev->CreateVertexBuffer(vb.size() * sizeof(float), 0, fvf, D3DPOOL_DEFAULT, &buffer, NULL); void* vbData; buffer->Lock(0, vb.size() * sizeof(float), &vbData, 0); copy(vb.begin(), vb.end(), (float*)vbData); buffer->Unlock(); } dev->SetStreamSource(0, buffer, 0, vbStride_bytes); dev->SetFVF(fvf); if (textureFilename.size() > 0) { dev->SetTexture(0, resources.LoadTexture(dev, textureFilename)); } else { dev->SetTexture(0, NULL); } dev->SetMaterial(&material); int start = 0; for(int j = 0; j < (int)vertexCounts.size(); j++) { int vertexCount = vertexCounts[j]; dev->DrawPrimitive(D3DPT_TRIANGLESTRIP, start, vertexCount - 2); start += vertexCount; } }