C-LegacyGL: OpenGL1向けにWebGLをサブセットできないか問題
WebGLは登場が2011年でその当時にはシェーダーを使った3Dプログラミングは普通のものになっていた。というわけで、シェーダー以前のハードウェア向けのWebGLというものは存在しない。
が、C-WebGLはできれば古いOpenGLハードウェアに対応したい。そのためには、何とかしてWebGLからシェーダー部分を抜き、固定機能向けのデータ供給機能を追加する必要がある。
例えばglTFのマテリアルに対応するとか、固定機能でもそれなりにリッチな出力を模索することはできなくもない気はする。
MozillaのCanvas 3d
nsICanvasRenderingContextGLES11.idl
にIDLがある。
... 当時のGLES2.0コンテキストは現在のWebGLのご先祖に相当する https://hg.mozilla.org/mozilla-central/file/814e972a6658d42410c23325df4e1222566283da/extensions/canvas3d/public/nsICanvasRenderingContextGLWeb20.idl 。この当時はOpenGLオブジェクトの識別が数値だったり、 readPixels
が無かったりするのも興味深いな。。
WindowsNTのOpenGL1.1
OpenGL1.0には無かったArrayや glDrawElements
がWindowsでは使えるようになっている。
Windowsはいくつかのスクリーンセーバーにその名前を冠してOpenGLを飛躍的に有名にしたが、結局自身のDirectXを推すことになったため、Windows公式のOpenGL実装は1.xのまま進化しなかった。まぁ最近はMesaへのコントリビュートによってOpenGL ESとかも無くは無いという状況にはなっているものの。。
このOpenGL1.1実装はWindows95版も出ている。(OSR2でこのOpenGLと↑のスクリーンセーバーが両方同梱された)
TinyGL
QemuやQuickJS、FFmpegで著名なFabrice Bellard によるソフトウェアラスタライザ。何でもやってんな。。去年に 20年ぶり のアップデートが投稿され、ライセンスがMITに変わった。(従来はzlib)
いくつかこれを元にしたライブラリもある。
- https://github.com/C-Chads/tinygl パッチされたバリアント。
- https://github.com/lunixbochs/tinygles OpenGLES1のインターフェースを付けたもの
内容的にはOpenGLのサブセットであり、例えばfogが無い、テクスチャは256x256に固定。
SciTech GLDirect
SciTech によるDirectX上のOpenGL実装。中身はMesaっぽい。
Mac
全然資料が無い。。そもそもRetro68 https://github.com/autc04/Retro68 は基本的なAPIしかカバーしてないからOpenGL SDKから探してくる必要があるけど、MacOS 9のOpenGLってSDL1のAGLくらいしか使ってるところを見たことが無い。。
iMac https://ja.wikipedia.org/wiki/IMac がRAGE(Radeonの1世代前)を搭載していて当時からOpenGLに対応していた記憶があるんだけど定かではない。
Apple は 1999 年 1 月に SGI より OpenGL のライセンスを取得し、OpenGL を正式にサポートすることを発表した。Apple は Conix Graphics 社製の OpenGL for Macintosh の権利を技術者ごと買収し、完成度を高めたり、チューニング作業を行ってきた。その後、1999 年 5 月、MacOS 用 OpenGL の正式版がリリースされた。
そうだったのか。。MacGlide上のMesaは記憶にあるな。。 http://web.archive.org/web/20010605024707/http://www.mesa3d.org/mac/
PortableGL
いわゆるheader-onlyな、1万行以上のソフトウェアラスタライザ。
VincentES
これってWinCE専用だっけか。。いやまぁコミットログにはEpocがあるけど。。
過去にはVincent3Dの名前で展開されていた。今だとGitHub上に後継のOpenGL SC実装がある。
あと未完成のGLES2も。
Glide と Mesa
MS-DOSでOpenGLできるソリューションとしてはGlide上のMesaがある。