DirectX11曲線描画失敗の巻
PS4で忙しかった(現実逃避)
いろいろやってて行き詰ったので現状整理。
目的
DirectXの機能でもって、y=(1-t)^3とかのグラフを描く。
曲線を描くことになる。
手段
いきなりBezier曲線とかハードル高そう(小並感)
クッソ短い直線大量に並べたろ!
結果
直線をずらして引いていくことには成功した。
ただ、一本引くごとに前の一本は消される(絶望)
考察
深く理解せずにあちこちのサイトからパクってきたツケがまわってきましたねぇ!
void RendererBase::Render()
とやらの中で
DrawLine()
で直線を描いてる。
void RendererBase::Render()がぐるぐるまわって画面が更新されてるんだと思うけど、
前に描いたヤツも保持、とかできないのか。できるだろうけど流石に。
調べよう。
WINAPIとは
Windowアプリケーションを作るときに使うインターフェース(関数群、的なもの)。
専用の型がいくつかある。
BYTE型
HRESULT型
LRESULT型
UINT型
などなど。
とはいえ、typedefで名前がついてるだけで実際はunsigned char型だったり、LONG型だったりらしい。ビビるわぁ!!
コンソールアプリケーションでは
int main(void) { //処理書く }
だったけど、
Windowアプリケーションでは
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd) { //処理書く }
こうなる。
詳しい中身
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow )
第一引数:インスタンスハンドル(プログラムを識別する為のハンドル)
第二引数:現在使われていない(?)
第三引数:コマンドライン引数
第四引数:ウィンドウの表示状態の指定
typedefとは
LRESULT・HRESULTとは
LRESULT は通常、ウィンドウプロシージャの戻り値としてよく使われます。
LRESULTは「LONG型の戻り値」です。
ウィンドウプロシージャの戻り値等で使われますが、
意味的にはそれ以上の特定用途はありません。
つまり、各関数やAPIの仕様でその値の意味が決まります。
HRESULTは、COMのインターフェイスにおいて戻り値用に定義された型です。
DirectX等はCOMベースなので、基本的にHRESULTが帰ってきます。
COMのインターフェイスの戻り値。
これはHRESULTで戻すのが基本的なルールです。
環境にもよりますが大抵はどちらもlong 型の typedef だったりします。
要するにエラー判定用戻り値の型
boolは二択(0or1)、こいつらは複数(double型だから)
ハンドルとは
ハンドルってのはいわゆるポインタみたいなもんで、
メモリ上のどこかに存在するリソースの場所を特定するための物です。
多分実体は void * が typedef で別名定義されてるだけだと思います。