移植覚書

最終更新

2022-11-15 なんとなく公開

はじめに

2014-08-31に書いてたらしき文章が発掘された(いつの間にかUPまでしてあったけどリンクしてなかった)ので、せっかくなのでそのまんま晒しageしておきます。

わっつでぃす

DirectX8 → DirectX9
9 と 10 は共存可能らしいけどそれ以外はダメらしいので頑張って書き換えますた
やっぱり言うほど頑張ってないわ

自分用なので雑。今の時代こんな情報はもはや何にもならない

8 を 9 に置き換えるだけ

ソースコード

#include "d3d8.h"
LPDIRECT3D8
LPDIRECT3DTEXTURE8 とか
とりあえず真っ先にincludeを書き換えておけばあとはエラーのおかげで自然と見つかる

プロパティ

リンカ > 追加の依存ファイル に d3d8 とかあるかも

引数が増えたやつ

引数の最後に NULL を追加すればおk

MS公式より
CreateTexture
CreateVolumeTexture
CreateCubeTexture
CreateVertexBuffer
CreateIndexBuffer
CreateRenderTarget
CreateDepthStencilSurface
CreateOffscreenPlainSurface
引数追加したくせに「未使用だからNULL渡せ」ってなんだよおい追加したなら使えよ

その他

SetStreamSource 8のときに第3だった引数が第4に ベタ移植なら新・第3引数にはとりあえず 0 で
IDirect3DVertexBuffer8::Lock C++では型変換を自動でやってくれないので第3引数を (BYTE**) から (void**) に
他にもなんかあった気がするけど思い出せないということはそんなにややこしくないってことだ

置き換える必要があるやつ

SetVertexShader → SetFVF
SetTextureStageState → SetSamplerState
CreateImageSurface → CreateOffscreenPlainSurface (らしい)
D3DTSS_ADDRESSU → D3DSAMP_ADDRESSU
D3DTSS_ADDRESSV → D3DSAMP_ADDRESSV
上2つはなんか場合にもよるっぽい?けどgoluahではよらなかったから知らん

CDirectDraw::CreateMyFont

HFONT がなんか変わったのかエラー吐くのでどっかのサイトからコピペ

メリット

CPU使用率低下
D3DXCreateSphere とか使えて便利
DirectX9 の方が解説してるサイトが多いからさらに便利

デメリット

GetD3D を使っていたdllがタヒる
LPDIRECT3DDEVICE が 8 と 9 で型変換できれば超嬉しい

次回予告

XPのサポートも切れたことだし DirectX9 → DirectX11