Original Post
With my rendering engine well under way, it's probably a surprise to be asking such a simple question, but what are the EXACT differences between SoftwareVertexProcessing, HardwareVertexProcessing and MixedVertexProcessing as device creation parameters? I've read a lot of documentation (including the DxSDK) that essentially boilds down to SoftwareVP is done on the CPU, HardwareVP is done on the hardware and MixedVP is a mixture of both. That takes stating the obvious to a new level, but it doesn't really explain exactly WHAT Vertex Processing is done. I just read something in a tutorial that said: SoftwareVP - In general, this is a good option for extremely complicated drawing scenes, since the 3D card will be very busy drawing them, and the CPU will mostly be idle. HardwareVP - This will work well in any basic scenes, since much of a 3D card's potential will be untapped, and video ram is much faster. MixedVP - best of both worlds, use this. What exactly is involved in VertexProcessing in this sense? Does it have more to do with the older Fixed Function Pipeline rather than the programmable pipeline? My initial prototype engine was based on DXUT, but in a bid to get a firm understanding of the setup of DirectX and all its parameters, I've removed it and written my own framework. I've set my parameter to HardwareVertexProcessing. I'm currently using (abstracted) DX9 and VS/PS 3.0 and all my transforming and lighting is done in the vertex and pixel shaders. Does that mean I'm implicitly using HardwareVertexProcessing? If I switch to SoftwareVertexProcessing, isn't that going to cause DirectX to run my shaders via software emulation on the CPU? I would have thought that would have been slower in all cases. Thanks [Edited by - RobMaddison on December 4, 2008 8:25:06 AM]