You use C++ or C and OpenGL for the library and use the same code for all 3 platforms.
That covers Windows, Mac, and Linux. But then you have to replace your computer with a Mac to test the Mac OS X version of an application, or if your current computer is already a Mac, you have to buy a Windows license to test the Windows version of your application if you didn't already have one to test your site in IE. And you also have to convince end users to trust, download, and install your applications, a barrier that a web application doesn't have. And on mobile, you have to buy one of each platform to test on, you have to pay per platform per year to target anything but Android, and Windows Phone doesn't use OpenGL at all.
And how does your library run on BROWSERS on all 3 platforms?
It doesn't. The server uses the user agent to determine which platform the user is on and sends a link to download the native application compiled for the appropriate platform. Then the user uses the browser to download the native application and installs the native application on his computer.
I can teach a 4th grader to create simple, but complete and useable websites in notepad.
Can you teach a 4th grader to make SVGs in Notepad?
But did you ever try to create 3D content? And it's definitly not the lack of tools for creating it.
At this point we're still at the stage where you have to draw your own fonts because a set of primitives to create the most basic 3D content isn't shipped with the platform. I agree that more work needs to be done, but waiting for a set of primitives before delivering a platform is like waiting for unanimous consent on the final color of the bike shed before beginning any construction.
And now look at the most frequented websites today: In what way would Facebook or Twitter and whatever webmail client you're using need it?
It's not Facebook or Google+ or Twitter or webmail itself that needs to be 3D; it's more about what you Like or +1 or tweet about or Send Link.
browser plugin
Safari for iOS and Chrome for Android don't support browser plug-ins.
Online stores like Amazon tend to show multiple views of products. Why not just provide a 3d model users can rotate themselves?
Because most businesses selling products through Amazon.com haven't laboriously modeled all the details of all the products that they sell in Blender. In some cases I've seen while working in online toy and hobby sales, you're lucky to have a flat picture at all because the seller outsources most of its warehousing to the distributor, and these distributors don't provide pictures for all products. So how do you recommend that these sellers efficiently build a mesh of each product with diffuse and specular textures? Are online sellers supposed to depend on manufacturers to provide these models when the manufacturers would prefer that end users visit a brick-and-mortar store than buy online?
The differences between IE, Firefox and Webkit browsers are far smaller than the differences between Windows, OS X and the various Linux distros.
Even if you have to do something that works on both the latest version of Chrome/Firefox and the latest version of Internet Exporer available for the latest service pack of Windows XP? The best strategy I've seen to handle advanced HTML5 features that don't polyfill well is to punt and require IE 8 users to install Google Chrome Frame.
or you could just write something in OpenGL and compile and run it anywhere you want natively.
Running something natively generally involves crossing an end-user permission boundary. Remember ActiveX? Furthermore, more and more often, running something natively requires gaining permission from a multinational company to whom device owners have delegated the power of curation, such as Apple or the game console makers.
Why must we shoehorn every last thing onto a platform that was meant to display text?
Because it provides a sandbox such that the permission boundary of downloading and installing a native application is not necessary.
Every day I am thankful that my life consists of no more than navigating a 2D space.
The everyday life of the majority of people has a fractal dimension far closer to two than three. When you navigate the real world, you navigate in a plane, with one dimension north and south and the other dimension east and west. Even when you go up and down, it's typically in discrete units called "floors" or "stories" (spelled "storeys" in the Commonwealth) which can be regarded as separate planes.
There are a few tiny edge cases
What's with this recurring meme that I've been seeing on Slashdot lately that edge cases should be ignored? If everybody has his own edge case, then why not allow something that handles all the edge cases acceptably?
but everything else is FPS or gimmick.
True, one of the first video games with a 3D perspective (Battlezone) was the ur-first-person-shooter, but 3D games in other genres have been popular since the mid-1990s. Or is every other video game genre "gimmick" and "few tiny edge cases" to you? I'm not getting what you mean by "gimmick"; in the circles where I hang out, "gimmick" refers to a 2D platformer for the NES published by Sunsoft with a design aesthetic similar to that of the Kirby games.
kind of like 3D tv's
The "3D" in "3D TV" and the "3D" in WebGL are two different things. WebGL just defines a way to project 3D geometry into a display plane. This display plane may or may not be presented with binocular separation, which is what the "3D" in "3D TV" and "Nintendo 3DS" means.
Understanding is always the understanding of a smaller problem in relation to a bigger problem. -- P.D. Ouspensky