If you want to design and code 3D game engines, it is essential that you fully understand one fundamental truth that determines the way games are written. This theorem states: "No matter how powerful the target platform is, you will always need more."
Game development is an innovative craft. Each game version must be better than the last one. Thus, you will always need more memory than you actually have, require better sound cards, and as far as this chapter is concerned, employ more and better graphics. If you can draw six million triangles per second, you will want to draw nine million, and so forth. In fact, games are one of the main reasons that keep computer hardware evolving so quickly. If you think about it, most of the standard applications do not have very restrictive hardware requirements.
But we need to restrain our ambition. Blue-sky thinking works great as a design tool, but as we try to put our design into actual running code, we need to be realistic and learn to discard the most extreme concepts. The hardware progression is sadly limited, and frequently, we will have ideas whose time will not have arrived yet. So writing games is a craft that involves prioritizing and selecting, and being able to transform your wild design ideas into working code that can be executed on the target platform at an interactive frame rate.