Yeah, but struct can't include methods, only variables.
Also, OOP isn't as advantageous in game engine design as it might be in other areas. Not just because it is slower, but also because a game engine is little more than a giant while loop that tesselates and renders frames and listens for user input. Not much room for fancy inheritances and polymorphisms there. In addition to this, OpenGL isn't object-oriented (unlike Direct3D). Nonetheless, it's much more convenient if elements like polygons, textures, vectors and suchlike are represented as objects.
Also, OOP isn't as advantageous in game engine design as it might be in other areas. Not just because it is slower, but also because a game engine is little more than a giant while loop that tesselates and renders frames and listens for user input. Not much room for fancy inheritances and polymorphisms there. In addition to this, OpenGL isn't object-oriented (unlike Direct3D). Nonetheless, it's much more convenient if elements like polygons, textures, vectors and suchlike are represented as objects.