So hardware determines the hard capacity of the computer to display content. The video card sets a cap on how fast it can process geometry, sprites, anything graphical.
However, those are absolutes - games just don't run off the video card, they have to run through their engine and the various interfaces it uses. This means that how the engine is programmed is a large factor in determining how fast the game runs. You could take two games with different engines, stick an identical amount of render data on the screen, and they probably wouldn't run the same. More efficient rendering methods, better organization of data, different algorithms for doing stuff all factor in. This means that you usually run into problems if you just uprate the graphics. A quick example - hack Starcraft, set the unit cap to 32k, and fill the screen with units. You'll start to see errors, and these errors will not disappear if you upgrade your computer. They are products of the engine.
This is why companies like to brag about 'scalable' engines - it means that you can keep increasing the amount of stuff it renders and not suffer any more performance drop than might be expected if rendering another 100k polys. Other companies use an old engine and scale it far more than it should. SAGE is an example of the latter - compare the system requirements for RA3 to BFME2s, and compare their graphics. There are diminishing returns past a certain point.
Basically what I'm saying is that for rendering data, there is a hardware cap set by your machine, and a software cap set by the engine. BFME/BFME2 is generally limited, in my experience, by the software cap.]
Edited by Nertea, 30 October 2009 - 09:09 PM.