2026:02:15
文書の過去の版を表示しています。
2/15日記
プログラム
- そらのちゃんから自力描画についていくつか教えてもらった。
- 転送周りは結構理解があやしかったので助かった。
- 自分はWindows環境における自力描画については半分理解してて、ただ半分は理解してなかった模様。
- まず自分はDirectDrawを使う前提で理解していたけど、あくまでこちらはハードウェア利用想定のもの。
- つまり半分CPU側で使ってる扱いの認識。他機種移植やゲームで使うとかであればいいけど、Windowsだともうちょっと突き詰められそう。(もちろん他機種移植も突き詰められるけど、そういうのはもはやメンテされてない恐れがあるか自力でやらんとダメそう)
- 現在はもしかしたらWindows11上ではエミュレーションされてるかもしれないけど、一番確実なのはBitBlt命令でSurfaceを転送することかと思うので、それができるフレームワークを作ってみた。幸いベース部分の実装はそれほど難しくなかったのでよかった。
- SFMLのでの実装については、最終的な転送はどうもOpenGL側っぽい気がしてる。実装の中身をうまく見れてない。
- 基本的なCPU描画はできるいるが、最終的な結果は転送側依存(=GPU)になると思われ。まだGDI使ってるの?みたいなコメントを見て、これGDI除外されてそうだなあと思ったりした。
- 基本方針は、「SFMLベース(実験+ゲーム想定)とWindows(実験想定)でベース部分を作って、お試ししてみる」
- 元々CPUのみで命令出して描画するという観点でフレームワークを作りたかったので、まず目的は満たせている。
- どちらもCPU側から描画するには必要な条件を満たせているので、あとはどこに出すかで切り替える形を予定。
- いくつか作り直しつつ、まず下記を見ながら適当に動くようにしてみた。
- ソースコードを参考にさせてもらって動かす。その前に作ったもので本来なら手順的に問題ないはずなのに何故か描画が動かなかったんだよね・・・
- とりあえずこれをベースにBitmapを更新できる画面にして動かしてみる。
- あとスケーリングは最悪更に仮想スクリーン情報かまして最終的な転送のときに拡大するようにしておけば問題なかろと思った。
- SFML、こちらの方法でOpenGL上のデバイスコンテキスト使っているのでは?となった。
- OpenGL上ではレンダリングコンテキストというらしい。
- デバイスコンテキストについては下記。
- つまりウィンドウ周りの共通仕様みたいな形で、Windows側(MFC)のデバイスコンテキストを利用した描画ではCPU使用される可能性がとっても高いという感じかな。
- ふむ
- これだな!
ゲーム
- 新しくゲーム出されてた
2026/02/15.1771138120.txt.gz · 最終更新: 2026/02/15 15:48 by machiaworx