Ok, just to make it clear, you can do a high number of draw calls. I would say you can easily do hundreds of draw calls per frame without a problem. So depending on how complex your scene is, you can still do that.
And yes, you can combine your objects into a single buffer, you'll see methods like this one :
DeviceContext.Draw(int vertexCount, int startVertexLocation);
These methods allow you to set offsets into a buffer and draw a chosen number of vertices from that buffer. So you will need to have specific knowledge about the vertices inside your buffers, and where in that buffer each model starts and ends. That knowledge may come as a result of you constructing the buffer yourself in code, or parsing your model files (fbx, x, or whatever) and determining where one model starts and ends. The process of putting multiple objects into a buffer is the same as putting one in, you just have to keep track of what you are doing. Each model is just a collection of vertices after all. One model is essentially the same as the next, in that they are both just made of vertices.
Drawing different textures on your models is not a problem. But it might take you a little time to work it all out. You can include texture indices inside your vertex data (eg using a color channel to hold your texture index) and use a texture array to provide your textures, or load your different textures into the texture buffers. Also you might include sprite sheet coordinates in your vertex data and map into a sprite sheet.
Those ideas should get you started.
Edit : Actually I just noticed you are using DirectX 9. I don't think DX9 has texture arrays in the sense that I'm talking about (DirectX 11). So you'll have to just use the texture buffers or a sprite sheet.
Edited by Gavin Williams, 03 December 2012 - 03:51 AM.