Textures sent to the GPU are universal, in the sense that the game gives every single of them to the GPU in an specified format and then the graphics processor returns a reference number for that instance, allowing easy tracking and replacement by custom alternatives. They are kind of self-contained and identifiable by their unique size, format and content (that's the weird hash of letters and numbers you see as image names in texture packs).

The problem with polygons is that the engine throws to the screen the entire visible/culled scene, a soup of vertices and polygon indices without meaning, and things that require flexible animation require skinning (often premade in software). You can't isolate a single character in that mess of triangles. There's no concept of individual models which can be easily swapped by the emulator. To animate you'd need to have skeletal information, which is only in the original proprietary format stored in the disc, which depends on the company, game and engine version.

Normally models will have to be extracted from big container formats using custom tools only valid for that game, and then you'd have to reverse engineer the 3D format(s) and make something like a Blender exp/importer and a repacker, with the added legal and logistic complications of distributing your mod, be in ISO format, or as a patch against the original DVD files.

I don't know how sound is handled in this platform, but in other consoles the game engine just does its own decompression of their own proprietary audio format and gives samples (a slice with the few next seconds) to the console by copying data to a circular buffer every now and then.

There's no concept of individual songs, most of the audio kind of comes to the emulator premixed and sliced as a continuum.

--

Take it with a grain of salt. I don't know about the GameCube internals, but I know about how other systems and 3D APIs work.