Open2
謎の関数 wglChoosePixelFormat
というわけで DirectX8 → wined3d → (Desktop OpenGL) → gl4es → (OpenGL ES2) → ANGLE → Vulkan の系をまず通したい。
一度OpenGL ES2でDirectX8なゲームがプレイできるようになったら、yuniframeのWebGL1実装を使ってプレイできるようにすることでWebブラウザに載せる道筋が付けられる。
ChoosePixelFormat
に失敗する問題
適当にstubを書いて実際にゲームに読ませてみたところ、wined3dが wglCreateContext
してこない。 wglGetCurrentDC
や wglGetCurrentContext
はしてくるので、
で失敗していることがわかる。
で、ねっとりとアセンブリをステップ実行したところ、WindowsのGDI関数 ChoosePixelFormat
は非公開のOpenGL32関数 wglChoosePixelFormat
にリダイレクトしており、プロセスにロードされたOpenGL32.dllにこの関数が無いとサイレントに失敗するようだ。
とりあえず何もしない関数で適当に実装しておいた。
(wglSetPixelFormat
は1を返却しないとGDIがレジスタを破壊するようだ。。)
この辺の事情はSOに回答があった: