描画の関数を丁寧に制作していたら、引数の種類について何が必要か必要でないのか、
別に関数を作った方が良いのか、少し混乱気味になってきた。
ヘッダファイル
#pragma once
#ifndef UNICODE
#define UNICODE
#endif
#define DXT_OPTIONS //オプション利用
#include
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
// Inline Functions
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
//クラスオブジェクト安全開放
template
inline void SafeReleaseClassObject(TypeName *&object)
{
if (object != NULL)
{
delete object;
object = NULL;
}
}
//Unknown継承クラスオブジェクト安全開放
template
inline void SafeReleaseUnknownClassObject(TypeName *&object)
{
if (object != NULL)
{
object->Release();
object = NULL;
}
}
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
// Time
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
//日付時刻構造体
struct DateTime
{
int year; //年
int month; //月
int day; //日
int hour; //時
int minute; //分
int second; //秒
};
#include
//日付時刻取得
void GetDateTime(DateTime *datetime);
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
// Message
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
#define DXT_MESSAGE_FILE_OUTPUT TRUE //既定メッセージログ書き込みフラグ
#include
using namespace std;
extern BOOL B_meesage_file_output; //メッセージログ書き込みフラグ
extern WCHAR s_meesage_file_path[256]; //メッセージログデータファイルパス
//メッセージログファイル作成
BOOL CreateMessageFile();
//メッセージログ書き込みフラグ参照
BOOL GetMessageFileOutputFlag();
//メッセージ表示
BOOL MessageW(LPCWSTR message, int code);
//メッセージログ書き込みフラグ設定
void SetMessageFileOutputFlag(BOOL flag);
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
// Window
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
#define DXT_CLIENT_CLEAR_ALPHA 0.5F //既定クライアント領域消去カラー不透明度
#define DXT_CLIENT_CLEAR_COLOR 0x0000ffU //既定クライアント領域消去カラー
#define DXT_CLIENT_HEIGHT 720L //既定クライアント領域高さ
#define DXT_CLIENT_WIDTH 1280L //既定クライアント領域幅
#define DXT_FPS 60 //既定CRTリフレッシュレート
#define DXT_WINDOW_LEFT CW_USEDEFAULT //既定ウインドウ描画座標[x]
#define DXT_WINDOW_TOP CW_USEDEFAULT //既定ウインドウ描画座標[y]
//デバッグ時のみ実行
#ifdef _DEBUG
#define DXT_WINDOW_CAPTION L"DXT[Debug]" //ウインドウキャプション
#else
//リリース時のみ実行
#define DXT_WINDOW_CAPTION L"DXT[Release]" //ウインドウキャプション
#endif
/*クライアント領域*/
extern FLOAT f_client_clear_alpha; //クライアント領域消去カラー不透明度
extern UINT32 U_client_clear_color; //クライアント領域消去カラー
extern POINT t_client_gap; //クライアント領域ウインドウ領域表示座標相対値
extern RECT t_client_margin; //クライアント領域ウインドウ領域内部座標相対値
extern SIZE t_client_size; //クライアント領域サイズ
/*ウインドウ*/
extern HBRUSH p_window_back_color; //ウインドウ背景消去カラー
extern LPCWSTR s_window_caption; //ウインドウキャプション
extern WNDCLASS t_window_class; //ウインドウクラス構造体
extern LPCWSTR s_window_class_name; //ウインドウクラス名
extern HWND p_window_handle; //ウインドウハンドル
extern MSG t_window_message; //ウインドウメッセージ
extern RECT t_window_rect; //ウインドウ座標
/*共通*/
extern BOOL B_application_instance_exit; //アプリ終了フラグ
extern HINSTANCE p_application_instance; //アプリケーションインスタンス
extern POINT t_mouse_point; //マウスカーソル座標
//ウインドウ作成
HRESULT DXTCreateWindow();
//ウィンドウメッセージループ処理
BOOL DXTMessageLoop();
//ウインドウ表示
BOOL DXTShowWindow();
//ウィンドウメッセージ処理
LRESULT CALLBACK DXTWindowProcedure(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
//クライアント領域ウインドウ領域表示x座標相対値
LONG GetClientGapX();
//クライアント領域ウインドウ領域表示y座標相対値
LONG GetClientGapY();
//マウスカーソルx座標参照
LONG GetMousePointX();
//マウスカーソルy座標参照
LONG GetMousePointY();
//クライアント領域消去カラー設定[常時実行OK]
void SetClientClearColor(UINT32 color = DXT_CLIENT_CLEAR_COLOR, FLOAT alpha = DXT_CLIENT_CLEAR_ALPHA);
//クライアント領域サイズ設定[常時実行OK]
void SetClientSize(LONG width = DXT_CLIENT_WIDTH, LONG height = DXT_CLIENT_HEIGHT);
//ウインドウキャプション設定[常時実行OK]
BOOL SetWindowCaption(LPCWSTR caption = DXT_WINDOW_CAPTION);
//ウインドウ位置設定[常時実行OK]
void SetWindowPosition(LONG left = DXT_WINDOW_LEFT, LONG top = DXT_WINDOW_TOP);
//ウインドウ矩形設定
void SetWindowRect();
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
// COM
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
//COM初期化
HRESULT InitializeCOM();
//COM終了処理
void UninitializeCOM();
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
// WIC
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
#include
#pragma comment(lib, "Windowscodecs.lib")
extern IWICImagingFactory *p_wic_factory; //WICルートインターフェースポインタ
//WICルートインターフェース作成
HRESULT CreateWICImagingFactory();
//WICルートインターフェース開放
void ReleaseWICImagingFactory();
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
// DirectWrite
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
#include
#pragma comment(lib, "dwrite.lib")
extern IDWriteFactory *p_dwrite_factory; //DWriteルートインターフェースポインタ
//DWriteルートインターフェース作成
HRESULT CreateDWriteFactory();
//DWriteインターフェース開放
void ReleaseDWriteFactory();
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
// DirectWrite - テキスト形式オブジェクト
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
//DXTフォント伸縮列挙体
enum DXT_FONT_STRETCH {
DXT_FONT_STRETCH_UNDEFINED = DWRITE_FONT_STRETCH_UNDEFINED,
DXT_FONT_STRETCH_ULTRA_CONDENSED = DWRITE_FONT_STRETCH_ULTRA_CONDENSED,
DXT_FONT_STRETCH_EXTRA_CONDENSED = DWRITE_FONT_STRETCH_EXTRA_CONDENSED,
DXT_FONT_STRETCH_CONDENSED = DWRITE_FONT_STRETCH_CONDENSED,
DXT_FONT_STRETCH_SEMI_CONDENSED = DWRITE_FONT_STRETCH_SEMI_CONDENSED,
DXT_FONT_STRETCH_NORMAL = DWRITE_FONT_STRETCH_NORMAL,
DXT_FONT_STRETCH_SEMI_EXPANDED = DWRITE_FONT_STRETCH_SEMI_EXPANDED,
DXT_FONT_STRETCH_EXPANDED = DWRITE_FONT_STRETCH_EXPANDED,
DXT_FONT_STRETCH_EXTRA_EXPANDED = DWRITE_FONT_STRETCH_EXTRA_EXPANDED,
DXT_FONT_STRETCH_ULTRA_EXPANDED = DWRITE_FONT_STRETCH_ULTRA_EXPANDED
};
//DXTフォントスタイル列挙体
enum DXT_FONT_STYLE
{
DXT_FONT_STYLE_NORMAL = DWRITE_FONT_STYLE_NORMAL, //Normal
DXT_FONT_STYLE_OBLIQUE = DWRITE_FONT_STYLE_OBLIQUE, //Oblique
DXT_FONT_STYLE_ITALIC = DWRITE_FONT_STYLE_ITALIC, //Italic
};
#define DXT_FONT_DEFAULT_ENTRY //既定フォント登録
#define DXT_FONT_ENTRY_MAX 20 //最大フォント登録数
#define DXT_FONT_NAME L"MS ゴシック" //既定フォント名
#define DXT_FONT_SIZE 20.0F //既定フォントサイズ
extern IDWriteTextFormat *p_dwrite_text_format[DXT_FONT_ENTRY_MAX]; //DWriteテキスト形式オブジェクトポインタ
extern int i_dwrite_text_format_entry; //DWriteテキスト形式登録数
//フォントハンドル作成
HRESULT CreateFontToHandle(int *fonthandle, LPCWSTR fontname = DXT_FONT_NAME, int fontsize = DXT_FONT_SIZE, int fontweight = DWRITE_FONT_WEIGHT_NORMAL, DXT_FONT_STYLE fontstyle = DXT_FONT_STYLE_NORMAL, DXT_FONT_STRETCH fontstretch = DXT_FONT_STRETCH_NORMAL);
//フォントハンドル破棄
BOOL DeleteFontToHandle(int *fonthandle);
//DWriteテキスト形式登録
HRESULT EntryDWriteTextFormat(int *fonthandle = NULL, LPCWSTR fontname = DXT_FONT_NAME, FLOAT fontsize = DXT_FONT_SIZE, int fontweight = DWRITE_FONT_WEIGHT_NORMAL, DXT_FONT_STYLE fontstyle = DXT_FONT_STYLE_NORMAL, DXT_FONT_STRETCH fontstretch = DXT_FONT_STRETCH_NORMAL);
//フォント登録数参照
int GetFontToHandleEntry();
//最大フォント登録数参照
int GetFontToHandleEntryMax();
//DWriteテキスト形式オブジェクト開放
void ReleaseDWriteTextFormat();
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
// Direct2D
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
#include
#include
#pragma comment(lib, "d2d1.lib")
//DXTアンチエイリアシングモード列挙体
enum DXT_ANTIALIAS
{
DXT_ANTIALIAS_FORCE_DWORD = D2D1_ANTIALIAS_MODE_FORCE_DWORD, //DXTアンチエイリアシングモード_FORCE_DWORD
DXT_ANTIALIAS_PER_PRIMITIVE = D2D1_ANTIALIAS_MODE_PER_PRIMITIVE, //DXTアンチエイリアシングモード_PER_PRIMITIVE
DXT_ANTIALIAS_ALIASED = D2D1_ANTIALIAS_MODE_ALIASED //DXTアンチエイリアシングモード_ALIASED
};
//DXTテキストアンチエイリアシングモード列挙体
enum DXT_TEXT_ANTIALIAS
{
DXT_TEXT_ANTIALIAS_DEFAULT = D2D1_TEXT_ANTIALIAS_MODE_DEFAULT, //DXTテキストアンチエイリアシングモード_システム既定値
DXT_TEXT_ANTIALIAS_CLEARTYPE = D2D1_TEXT_ANTIALIAS_MODE_CLEARTYPE, //DXTテキストアンチエイリアシングモード_ClearType
DXT_TEXT_ANTIALIAS_GRAYSCALE = D2D1_TEXT_ANTIALIAS_MODE_GRAYSCALE, //DXTテキストアンチエイリアシングモード_グレースケール
DXT_TEXT_ANTIALIAS_ALIASED = D2D1_TEXT_ANTIALIAS_MODE_ALIASED, //DXTテキストアンチエイリアシングモード_不使用
};
extern DXT_ANTIALIAS e_d2d1_antialias; //D2D1アンチエイリアシングモード
extern ID2D1Factory *p_d2d1_factory; //D2D1ルートインターフェースポインタ
extern ID2D1HwndRenderTarget *p_d2d1_render_target; //D2D1ウインドウレンダーターゲットポインタ
extern DXT_TEXT_ANTIALIAS e_d2d1_text_antialias; //D2D1テキストアンチエイリアシングモード
//D2D1ルートインターフェース作成
HRESULT CreateD2D1Factory();
//D2D1ウインドウレンダーターゲット作成
HRESULT CreateD2D1HwndRenderTarget();
//DXTアンチエイリアシングモード参照
DXT_ANTIALIAS GetD2D1AntiAlias();
//DXTテキストアンチエイリアシングモード参照
DXT_TEXT_ANTIALIAS GetD2D1TextAntiAlias();
//D2D1ルートインターフェース開放
void ReleaseD2D1Factory();
//D2D1ウインドウレンダーターゲット開放
void ReleaseD2D1HwndRenderTarget();
//DXTアンチエイリアシングモード設定
void SetD2D1AntiAlias(DXT_ANTIALIAS DXT_ANTIALIAS_x);
//DXTテキストアンチエイリアシングモード設定
void SetD2D1TextAntiAlias(DXT_TEXT_ANTIALIAS DXT_TEXT_ANTIALIAS_x);
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
// Direct2D - テキスト描画
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
//DXTテキストアライメント列挙体
enum DXT_TEXT_ALIGN
{
DXT_TEXT_ALIGN_LEFT = DWRITE_TEXT_ALIGNMENT_LEADING, //文字列左寄せ
DXT_TEXT_ALIGN_CENTER = DWRITE_TEXT_ALIGNMENT_CENTER, //文字列中央寄せ
DXT_TEXT_ALIGN_RIGHT = DWRITE_TEXT_ALIGNMENT_TRAILING //文字列右寄せ
};
//レイアウト文字列描画
HRESULT DrawDWriteFormatText(FLOAT left, FLOAT top, FLOAT words, LPCWSTR string, ID2D1SolidColorBrush *d2d1brush, D2D1_TEXT_ANTIALIAS_MODE alias = D2D1_TEXT_ANTIALIAS_MODE_DEFAULT, int fonthandle = 0, DWRITE_TEXT_ALIGNMENT alignment_x = DWRITE_TEXT_ALIGNMENT_JUSTIFIED, DWRITE_PARAGRAPH_ALIGNMENT alignment_y = DWRITE_PARAGRAPH_ALIGNMENT_CENTER);
//レイアウト文字列描画
HRESULT DrawDWriteFormatText(FLOAT left, FLOAT top, FLOAT words, LPCWSTR string, UINT32 color = 0xffffffU, FLOAT alpha = 1.F, D2D1_TEXT_ANTIALIAS_MODE alias = D2D1_TEXT_ANTIALIAS_MODE_DEFAULT, int fonthandle = 0, DWRITE_TEXT_ALIGNMENT alignment_x = DWRITE_TEXT_ALIGNMENT_JUSTIFIED, DWRITE_PARAGRAPH_ALIGNMENT alignment_y = DWRITE_PARAGRAPH_ALIGNMENT_CENTER);
//書式文字列描画
HRESULT DrawFormatString(int left, int top, UINT32 color, int fonthandle, FLOAT alpha, LPCWSTR format, ...);
//書式文字列描画
HRESULT DrawFormatStringF(FLOAT left, FLOAT top, UINT32 color, int fonthandle, FLOAT alpha, LPCWSTR format, ...);
//既定フォント文字列描画
HRESULT DrawString(int left, int top, LPCWSTR string, UINT32 color = 0xffffffU, FLOAT alpha = 1.F);
//既定フォント文字列描画
HRESULT DrawStringF(FLOAT left, FLOAT top, LPCWSTR string, UINT32 color = 0xffffffU, FLOAT alpha = 1.F);
//文字列描画
HRESULT DrawStringToHandle(int left, int top, LPCWSTR string, UINT32 color = 0xffffffU, int fonthandle = 0, FLOAT alpha = 1.F);
//文字列描画
HRESULT DrawStringToHandleF(FLOAT left, FLOAT top, LPCWSTR string, UINT32 color = 0xffffffU, int fonthandle = 0, FLOAT alpha = 1.F);
//既定フォント整数値描画
HRESULT DrawValue(int left, int top, FLOAT words, LONG value, UINT32 color = 0xffffffU, FLOAT alpha = 1.F);
//既定フォント整数値描画
HRESULT DrawValueF(FLOAT left, FLOAT top, FLOAT words, LONG value, UINT32 color = 0xffffffU, FLOAT alpha = 1.F);
//整数値描画
HRESULT DrawValueToHandle(int left, int top, FLOAT words, LONG value, UINT32 color = 0xffffffU, int fonthandle = 0, FLOAT alpha = 1.F);
//整数値描画
HRESULT DrawValueToHandleF(FLOAT left, FLOAT top, FLOAT words, LONG value, UINT32 color = 0xffffffU, int fonthandle = 0, FLOAT alpha = 1.F);
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
// Direct2D - 画像オブジェクト
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
//DXT画像リサイズ補間方法列挙体
enum DXT_BITMAP_RESIZE
{
DXT_BITMAP_RESIZE_NEAREST = D2D1_BITMAP_INTERPOLATION_MODE_NEAREST_NEIGHBOR, //Nearest Neighbor
DXT_BITMAP_RESIZE_LINEAR = D2D1_BITMAP_INTERPOLATION_MODE_LINEAR //Linear
};
#define DXT_BITMAP_ENTRY_MAX 100 //最大画像登録数
extern ID2D1Bitmap *p_d2d1_bitmap[DXT_BITMAP_ENTRY_MAX]; //D2D1画像オブジェクトポインタ
extern int i_d2d1_bitmap_entry; //D2D1画像登録数
extern DXT_BITMAP_RESIZE e_d2d1_bitmap_resize; //D2D1画像リサイズ補間方法
//画像オブジェクト破棄
BOOL DeleteGraph(int *bitmaphandle);
//D2D1画像登録数参照
int GetD2D1BitmapEntry();
//最大画像登録数参照
int GetD2D1BitmapEntryMax();
//D2D1画像リサイズ補間方法参照
DXT_BITMAP_RESIZE GetD2D1BitmapResize();
//画像オブジェクト縦サイズ参照
FLOAT GetGraphHeight(int bitmaphandle);
//画像オブジェクトサイズ参照
D2D1_SIZE_F GetGraphSize(int bitmaphandle);
//画像オブジェクト横サイズ参照
FLOAT GetGraphWidth(int bitmaphandle);
//画像オブジェクト登録
HRESULT LoadGraph(int *bitmaphandle, LPCWSTR filename);
//D2D1画像オブジェクト開放
void ReleaseD2D1BitmapObject();
//D2D1画像リサイズ補間方法設定
void SetD2D1BitmapResize(DXT_BITMAP_RESIZE DXT_BITMAP_RESIZE_x);
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
// Direct2D - 画像オブジェクト描画
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
//D2D1画像オブジェクト描画
BOOL DrawD2D1BitmapObject(ID2D1Bitmap *bitmap, const D2D1_RECT_F *dst_rect = (const D2D1_RECT_F*)0, FLOAT alpha = 1.F, const D2D1_RECT_F *src_rect = (const D2D1_RECT_F*)0);
//画像オブジェクト拡縮描画
BOOL DrawExtendGraph(int left, int top, int bitmaphandle, FLOAT extend = 1.F, FLOAT alpha = 1.F);
//画像オブジェクト拡縮描画
BOOL DrawExtendGraphF(FLOAT left, FLOAT top, int bitmaphandle, FLOAT extend = 1.F, FLOAT alpha = 1.F);
//画像オブジェクト描画
BOOL DrawGraph(int left, int top, int bitmaphandle, FLOAT alpha = 1.F);
//画像オブジェクト描画
BOOL DrawGraphF(FLOAT left, FLOAT top, int bitmaphandle, FLOAT alpha = 1.F);
//画像オブジェクトブロック転送描画
BOOL DrawRectGraph(int left, int top, int src_x, int src_y, int width, int height, int bitmaphandle, FLOAT extend = 1.F, FLOAT alpha = 1.F);
//画像オブジェクトブロック転送描画
BOOL DrawRectGraphF(FLOAT left, FLOAT top, FLOAT src_x, FLOAT src_y, FLOAT width, FLOAT height, int bitmaphandle, FLOAT extend = 1.F, FLOAT alpha = 1.F);
//画像オブジェクト回転描画
BOOL DrawRotateGraph(int cx, int cy, int bitmaphandle, FLOAT angle = 1.F, FLOAT extend_x = 1.F, FLOAT extend_y = 1.F, FLOAT alpha = 1.F, BOOL turn_x = FALSE, BOOL turn_y = FALSE);
//画像オブジェクト回転描画
BOOL DrawRotateGraphF(FLOAT cx, FLOAT cy, int bitmaphandle, FLOAT angle = 1.F, FLOAT exten_x = 1.F, FLOAT extend_y = 1.F, FLOAT alpha = 1.F, BOOL turn_x = FALSE, BOOL turn_y = FALSE);
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
// Direct2D - 図形描画
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
//D2D1四角形描画
BOOL DrawD2D1Rectangle(const D2D1_RECT_F *rect, ID2D1Brush *rectbrush, FLOAT stroke = 1.F, ID2D1StrokeStyle *style = NULL, BOOL fillflag = FALSE, ID2D1Brush *fillbrush = NULL);
//D2D1四角形描画
HRESULT DrawD2D1Rectangle(FLOAT left, FLOAT top, FLOAT width, FLOAT height, UINT32 color, FLOAT stroke = 1, FLOAT alpha = 1.F, ID2D1StrokeStyle *style = NULL, BOOL fillflag = FALSE, UINT32 fillcolor = 0U, FLOAT fillalpha = 1.F);
//四角形描画
HRESULT DrawBox(int left, int top, int width, int height, UINT32 framecolor, int stroke = 1, FLOAT framealpha = 1.F, BOOL fillflag = FALSE, UINT32 fillcolor = 0U, FLOAT fillalpha = 1.F);
//塗りつぶし四角形描画
HRESULT DrawFilledBox(int left, int top, int width, int height, UINT32 color, FLOAT alpha = 1.F);
//角丸四角形描画
HRESULT DrawRoundedBox(int left, int top, int width, int height, FLOAT rad, UINT32 framecolor, int stroke = 1, FLOAT framealpha = 1.F, BOOL fillflag = FALSE, UINT32 fillcolor = 0U, FLOAT fillalpha = 1.F);
//塗りつぶし角丸四角形描画
HRESULT DrawRoundedFilledBox(int left, int top, int width, int height, FLOAT rad, UINT32 color, FLOAT alpha = 1.F);
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
// DirectInput
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
#define DIRECTINPUT_VERSION 0x0800 //DirectInput Version
#define INITGUID //Initialize GUID
#include
#pragma comment(lib, "dinput8.lib")
#pragma comment(lib, "dxguid.lib")
extern LPDIRECTINPUT8 p_di8; //DI8インターフェースポインタ
//DI8インターフェース作成
HRESULT CreateDI8Interface();
//DI8インターフェース開放
void ReleaseDI8Interface();
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
// DirectInput - Keyboard
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
//DXTキーボードキー列挙体
enum DXT_KEY
{
DXT_KEY_ESC = DIK_ESCAPE, // Escキー
DXT_KEY_1 = DIK_1, // 1キー
DXT_KEY_2 = DIK_2, // 2キー
DXT_KEY_3 = DIK_3, // 3キー
DXT_KEY_4 = DIK_4, // 4キー
DXT_KEY_5 = DIK_5, // 5キー
DXT_KEY_6 = DIK_6, // 6キー
DXT_KEY_7 = DIK_7, // 7キー
DXT_KEY_8 = DIK_8, // 8キー
DXT_KEY_9 = DIK_9, // 9キー
DXT_KEY_0 = DIK_0, // 0キー
DXT_KEY_MINUS = DIK_MINUS, // -キー
DXT_KEY_EQUALS = DIK_EQUALS, // =キー
DXT_KEY_BACK_SPACE = DIK_BACK, // Back Spaceキー
DXT_KEY_TAB = DIK_TAB, // Tabキー
DXT_KEY_Q = DIK_Q, // Qキー
DXT_KEY_W = DIK_W, // Wキー
DXT_KEY_E = DIK_E, // Eキー
DXT_KEY_R = DIK_R, // Rキー
DXT_KEY_T = DIK_T, // Tキー
DXT_KEY_Y = DIK_Y, // Yキー
DXT_KEY_U = DIK_U, // Uキー
DXT_KEY_I = DIK_I, // Iキー
DXT_KEY_O = DIK_O, // Oキー
DXT_KEY_P = DIK_P, // Pキー
DXT_KEY_BRACKET_L = DIK_LBRACKET, // [キー
DXT_KEY_BRACKET_R = DIK_RBRACKET, // ]キー
DXT_KEY_ENTER = DIK_RETURN, // Enterキー
DXT_KEY_CTRL_L = DIK_LCONTROL, // 左Ctrlキー
DXT_KEY_A = DIK_A, // Aキー
DXT_KEY_S = DIK_S, // Sキー
DXT_KEY_D = DIK_D, // Dキー
DXT_KEY_F = DIK_F, // Fキー
DXT_KEY_G = DIK_G, // Gキー
DXT_KEY_H = DIK_H, // Hキー
DXT_KEY_J = DIK_J, // Jキー
DXT_KEY_K = DIK_K, // Kキー
DXT_KEY_L = DIK_L, // Lキー
DXT_KEY_SEMICOLON = DIK_SEMICOLON, // ;キー
DXT_KEY_APOSTROPHE = DIK_APOSTROPHE, // 'キー
DXT_KEY_GRAVE = DIK_GRAVE, // `キー
DXT_KEY_SHIFT_L = DIK_LSHIFT, // 左Shiftキー
DXT_KEY_BACKSLASH = DIK_BACKSLASH, // \[Back Slash]キー
DXT_KEY_Z = DIK_Z, // Zキー
DXT_KEY_X = DIK_X, // Xキー
DXT_KEY_C = DIK_C, // Cキー
DXT_KEY_V = DIK_V, // Vキー
DXT_KEY_B = DIK_B, // Bキー
DXT_KEY_N = DIK_N, // Nキー
DXT_KEY_M = DIK_M, // Mキー
DXT_KEY_COMMA = DIK_COMMA, // ,キー
DXT_KEY_PERIOD = DIK_PERIOD, // .キー
DXT_KEY_SLASH = DIK_SLASH, // /キー
DXT_KEY_SHIFT_R = DIK_RSHIFT, // 右Shiftキー
DXT_KEY_NUMPAD_MULTIPLY = DIK_MULTIPLY, // [Num]*キー
DXT_KEY_ALT_L = DIK_LMENU, // 左Altキー
DXT_KEY_SPACE = DIK_SPACE, // Spaceキー
DXT_KEY_CAPS_LOCK = DIK_CAPITAL, // Caps Lockキー
DXT_KEY_F1 = DIK_F1, // F1キー
DXT_KEY_F2 = DIK_F2, // F2キー
DXT_KEY_F3 = DIK_F3, // F3キー
DXT_KEY_F4 = DIK_F4, // F4キー
DXT_KEY_F5 = DIK_F5, // F5キー
DXT_KEY_F6 = DIK_F6, // F6キー
DXT_KEY_F7 = DIK_F7, // F7キー
DXT_KEY_F8 = DIK_F8, // F8キー
DXT_KEY_F9 = DIK_F9, // F9キー
DXT_KEY_F10 = DIK_F10, // F10キー
DXT_KEY_NUMPAD_NUM_LOCK = DIK_NUMLOCK, // [Num]Num Lockキー
DXT_KEY_SCROLL_LOCK = DIK_SCROLL, // Scroll Lockキー
DXT_KEY_NUMPAD_7 = DIK_NUMPAD7, // [Num]7キー
DXT_KEY_NUMPAD_8 = DIK_NUMPAD8, // [Num]8キー
DXT_KEY_NUMPAD_9 = DIK_NUMPAD9, // [Num]9キー
DXT_KEY_NUMPAD_SUBTRACT = DIK_SUBTRACT, // [Num]-キー
DXT_KEY_NUMPAD_4 = DIK_NUMPAD4, // [Num]4キー
DXT_KEY_NUMPAD_5 = DIK_NUMPAD5, // [Num]5キー
DXT_KEY_NUMPAD_6 = DIK_NUMPAD6, // [Num]6キー
DXT_KEY_NUMPAD_ADD = DIK_ADD, // [Num]+キー
DXT_KEY_NUMPAD_1 = DIK_NUMPAD1, // [Num]1キー
DXT_KEY_NUMPAD_2 = DIK_NUMPAD2, // [Num]2キー
DXT_KEY_NUMPAD_3 = DIK_NUMPAD3, // [Num]3キー
DXT_KEY_NUMPAD_0 = DIK_NUMPAD0, // [Num]0キー
DXT_KEY_NUMPAD_DECIMAL = DIK_DECIMAL, // [Num].キー
DXT_KEY_F11 = DIK_F11, // F11キー
DXT_KEY_F12 = DIK_F12, // F12キー
DXT_KEY_F13 = DIK_F13, // F13キー
DXT_KEY_F14 = DIK_F14, // F14キー
DXT_KEY_F15 = DIK_F15, // F15キー
DXT_KEY_KANA = DIK_KANA, // カナキー
DXT_KEY_CONVERT = DIK_CONVERT, // 変換キー
DXT_KEY_NOCONVERT = DIK_NOCONVERT, // 無変換キー
DXT_KEY_YEN = DIK_YEN, // \キー
DXT_KEY_NUMPAD_EQUALS = DIK_NUMPADEQUALS, // [Num]=キー
DXT_KEY_CIRCUMFLEX = DIK_CIRCUMFLEX, // ^キー
DXT_KEY_AT = DIK_AT, // @キー
DXT_KEY_COLON = DIK_COLON, // :キー
DXT_KEY_UNDERLINE = DIK_UNDERLINE, // _キー
DXT_KEY_KANJI = DIK_KANJI, // 漢字キー
DXT_KEY_STOP = DIK_STOP, // Stopキー
DXT_KEY_AX = DIK_AX, // [Japan AX]AXキー
DXT_KEY_UNLABELED = DIK_UNLABELED, // [J3100]Unlabeledキー
DXT_KEY_NUMPAD_ENTER = DIK_NUMPADENTER, // [Num]Enterキー
DXT_KEY_CTRL_R = DIK_RCONTROL, // 右Ctrlキー
DXT_KEY_NUMPAD_COMMA = DIK_NUMPADCOMMA, // [Num],キー
DXT_KEY_NUMPAD_DIVIDE = DIK_DIVIDE, // [Num]/キー
DXT_KEY_SYS_RQ = DIK_SYSRQ, // Sys Rqキー
DXT_KEY_ALT_R = DIK_RMENU, // 右Altキー
DXT_KEY_PAUSE = DIK_PAUSE, // Pauseキー
DXT_KEY_HOME = DIK_HOME, // Homeキー
DXT_KEY_UP = DIK_UP, // ↑キー
DXT_KEY_PAGE_UP = DIK_PRIOR, // Page Upキー
DXT_KEY_LEFT = DIK_LEFT, // ←キー
DXT_KEY_RIGHT = DIK_RIGHT, // →キー
DXT_KEY_END = DIK_END, // Endキー
DXT_KEY_DOWN = DIK_DOWN, // ↓キー
DXT_KEY_PAGE_DOWN = DIK_NEXT, // Page Downキー
DXT_KEY_INSERT = DIK_INSERT, // Insertキー
DXT_KEY_DELETE = DIK_DELETE, // Deleteキー
DXT_KEY_LWIN = DIK_LWIN, // [Windows]左Winキー
DXT_KEY_RWIN = DIK_RWIN, // [Windows]右Winキー
DXT_KEY_MENU = DIK_APPS, // Menuキー
DXT_KEY_POWER = DIK_POWER, // Powerキー
DXT_KEY_SLEEP = DIK_SLEEP, // [Windows]Sleepキー
DXT_KEY_224 = 224, // [Undefined]224キー
DXT_KEY_225 = 225, // [Undefined]225キー
DXT_KEY_226 = 226, // [Undefined]226キー
DXT_KEY_WAKE = DIK_WAKE, // Wakeキー
DXT_KEY_228 = 228, // [Undefined]228キー
DXT_KEY_WEB_SEARCH = DIK_WEBSEARCH, // Web Searchキー
DXT_KEY_WEB_FAVORITES = DIK_WEBFAVORITES, // Web Favoritesキー
DXT_KEY_WEB_REFRESH = DIK_WEBREFRESH, // Web Refreshキー
DXT_KEY_WEB_STOP = DIK_WEBSTOP, // Web Stopキー
DXT_KEY_WEB_FORWARD = DIK_WEBFORWARD, // Web Forwardキー
DXT_KEY_WEB_BACK = DIK_WEBBACK, // Web Backキー
DXT_KEY_MY_COMPUTER = DIK_MYCOMPUTER, // My Computerキー
DXT_KEY_MAIL = DIK_MAIL, // Mailキー
DXT_KEY_MEDIA_SELECT = DIK_MEDIASELECT, // Media SeLectキー
DXT_KEY_238 = 238, // [Undefined]238キー
DXT_KEY_239 = 239, // [Undefined]239キー
DXT_KEY_240 = 240, // [Undefined]240キー
DXT_KEY_241 = 241, // [Undefined]241キー
DXT_KEY_242 = 242, // [Undefined]242キー
DXT_KEY_243 = 243, // [Undefined]243キー
DXT_KEY_244 = 244, // [Undefined]244キー
DXT_KEY_245 = 245, // [Undefined]245キー
DXT_KEY_246 = 246, // [Undefined]246キー
DXT_KEY_247 = 247, // [Undefined]247キー
DXT_KEY_248 = 248, // [Undefined]248キー
DXT_KEY_249 = 249, // [Undefined]249キー
DXT_KEY_250 = 250, // [Undefined]250キー
DXT_KEY_251 = 251, // [Undefined]251キー
DXT_KEY_252 = 252, // [Undefined]252キー
DXT_KEY_253 = 253, // [Undefined]253キー
DXT_KEY_254 = 254, // [Undefined]254キー
DXT_KEY_255 = 255, // [Undefined]255キー
DXT_KEY_MAX // キーボードキー列挙子最大値
};
#define DXT_KEYBOARD_KEY_BUFFER DXT_KEY_MAX //キーボードキー入力バッファサイズ
#define DXT_KEYBOARD_KEY_MAX DXT_KEY_238 //キーボードキー総数
extern LPDIRECTINPUTDEVICE8 p_di8_keyboard; //DI8キーボード入力デバイスオブジェクトポインタ
extern DIDEVCAPS t_di8_keyboard_caps; //DI8キーボード入力デバイス能力オブジェクト
extern int i_di8_keyboard_key_max; //DI8キーボードキー数
extern int i_di8_keyboard_press[DXT_KEYBOARD_KEY_BUFFER]; //DI8キー入力継続値
extern char c_di8_keyboard_state[DXT_KEYBOARD_KEY_BUFFER]; //DI8キー入力バッファ
//DI8キーボード入力デバイスオブジェクト作成
HRESULT CreateDI8Keyboard();
//DI8キーボード入力継続値参照
int GetDI8KeyboardPressTime(DXT_KEY DXT_KEY_x);
//DI8キーボード入力状態取得
void CALLBACK GetDI8KeyboardState();
//DI8キーボード押下キー総数参照
int GetDI8KeyboardTotalPressKey();
//DI8キーボード入力デバイスオブジェクト開放
void ReleaseDI8Keyboard();
//DI8キーボード入力継続値設定
void SetDI8KeyboardPressTime(DXT_KEY DXT_KEY_x = DXT_KEY_MAX, int presstime = 0);
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
// DirectInput - Joystick
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
//DXTジョイパッドキー列挙体
enum DXT_PAD
{
DXT_PAD_1, //ボタン1
DXT_PAD_2, //ボタン2
DXT_PAD_3, //ボタン3
DXT_PAD_4, //ボタン4
DXT_PAD_5, //ボタン5
DXT_PAD_6, //ボタン6
DXT_PAD_7, //ボタン7
DXT_PAD_8, //ボタン8
DXT_PAD_9, //ボタン9
DXT_PAD_10, //ボタン10
DXT_PAD_11, //ボタン11
DXT_PAD_12, //ボタン12
DXT_PAD_13, //ボタン13
DXT_PAD_14, //ボタン14
DXT_PAD_15, //ボタン15
DXT_PAD_16, //ボタン16
DXT_PAD_17, //ボタン17
DXT_PAD_18, //ボタン18
DXT_PAD_19, //ボタン19
DXT_PAD_20, //ボタン20
DXT_PAD_21, //ボタン21
DXT_PAD_22, //ボタン22
DXT_PAD_23, //ボタン23
DXT_PAD_24, //ボタン24
DXT_PAD_25, //ボタン25
DXT_PAD_26, //ボタン26
DXT_PAD_27, //ボタン27
DXT_PAD_28, //ボタン28
DXT_PAD_29, //ボタン29
DXT_PAD_30, //ボタン30
DXT_PAD_31, //ボタン31
DXT_PAD_32, //ボタン32
DXT_PAD_UP, //上方向キー
DXT_PAD_DOWN, //下方向キー
DXT_PAD_LEFT, //左方向キー
DXT_PAD_RIGHT, //右方向キー
DXT_PAD_RANGE_PITCH, //縦方向キー傾斜度
DXT_PAD_RANGE_SLIDE, //横方向キー傾斜度
DXT_PAD_MAX //ジョイパッドキー列挙子最大値
};
//ジョイパッドマクロ
#define DXT_PAD_BUTTON_MAX 10 //ジョイパッドボタン数
#define DXT_PAD_RANGE_MAX 100L //ジョイパッドアナログ方向キー入力範囲[最大値]
#define DXT_PAD_RANGE_MIN -DXT_PAD_RANGE_MAX //ジョイパッドアナログ方向キー入力範囲[最小値]
extern LPDIRECTINPUTDEVICE8 p_di8_joypad; //DI8ジョイパッド入力デバイスオブジェクトポインタ
extern int i_di8_joypad_button_max; //DI8ジョイパッドボタン数
extern DIDEVCAPS t_di8_joypad_caps; //DI8ジョイパッド入力デバイス能力オブジェクト
extern int i_di8_joypad_press[DXT_PAD_MAX]; //DI8ジョイパッド入力継続値
extern DIJOYSTATE t_di8_joypad_state; //DI8ジョイパッド入力バッファ
//DI8ジョイパッド入力状態初期化
void ClearDI8JoystickState();
//DI8ジョイパッド入力デバイスオブジェクト作成コールバック関数
BOOL CALLBACK CreateDI8JoystickDeviceCallBack(const DIDEVICEINSTANCE *deviceinstance, void *context);
//DI8ジョイパッド入力デバイスオブジェクト作成
HRESULT CreateDI8Joystick();
//DI8ジョイパッド入力デバイスオブジェクト列挙コールバック関数
BOOL CALLBACK EnumDI8JoystickDeviceCallback(const DIDEVICEOBJECTINSTANCE *pdidoi, void *context);
//DI8ジョイパッド方向キー入力強度参照
FLOAT GetDI8JoystickDegree(DXT_PAD DXT_PAD_RANGE_x);
//DI8ジョイパッド入力継続値参照
int GetDI8JoystickPressTime(DXT_PAD DXT_PAD_x);
//DI8ジョイパッド入力状態取得
void CALLBACK GetDI8JoystickState();
//DI8ジョイパッド押下キー総数参照
int GetDI8JoystickTotalPressKey();
//DI8ジョイパッド入力デバイスオブジェクト開放
void ReleaseDI8Joystick();
//DI8ジョイパッド入力継続値設定
void SetDI8JoystickPressTime(DXT_PAD DXT_PAD_x = DXT_PAD_MAX, int presstime = 0);
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
// DirectInput - Mouse
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
//DXTマウスキー列挙体
enum DXT_MOUSE
{
DXT_MOUSE_LEFT, //左ボタン
DXT_MOUSE_RIGHT, //右ボタン
DXT_MOUSE_CENTER, //中ボタン
DXT_MOUSE_EX_1, //追加ボタン1
DXT_MOUSE_EX_2, //追加ボタン2
DXT_MOUSE_EX_3, //追加ボタン3
DXT_MOUSE_EX_4, //追加ボタン4
DXT_MOUSE_EX_5, //追加ボタン5
DXT_MOUSE_MAX //マウスキー列挙子最大値
};
//マウスマクロ
#define DXT_MOUSE_CLICK_INTERVAL DXT_FPS //クリック感知最大フレーム数
#define DXT_MOUSE_BUTTON_MAX 4 //既定マウスボタン数
extern LPDIRECTINPUTDEVICE8 p_di8_mouse; //DI8マウスデバイスオブジェクトポインタ
extern int i_di8_mouse_button_max; //DI8マウスボタン数
extern DIDEVCAPS t_di8_mouse_caps; //DI8マウス入力デバイス能力オブジェクト
extern BOOL i_di8_mouse_click[DXT_MOUSE_MAX]; //DI8マウスボタンクリックフラグ
extern int i_di8_mouse_click_interval; //DI8マウスボタンクリック感知最大フレーム数
extern int i_di8_mouse_press[DXT_MOUSE_MAX]; //DI8マウスボタン入力継続値
extern int i_di8_mouse_press_last[DXT_MOUSE_MAX]; //DI8マウスボタン入力継続値[前回]
extern DIMOUSESTATE t_di8_mouse_state; //DI8マウス入力バッファ
//DI8マウス入力状態初期化
void ClearDI8MouseState();
//DI8マウス入力デバイスオブジェクト作成
HRESULT CreateDI8Mouse();
//DI8マウスクリック入力参照
BOOL GetDI8MouseClick(DXT_MOUSE DXT_MOUSE_x);
//DI8マウス入力継続値参照
int GetDI8MousePressTime(DXT_MOUSE DXT_MOUSE_x);
//DI8マウス入力状態取得
void CALLBACK GetDI8MouseState();
//DI8マウス押下キー総数参照
int GetDI8MouseTotalPressKey();
//DI8マウス入力デバイスオブジェクト開放
void ReleaseDI8Mouse();
//DI8マウス入力継続値設定
void SetDI8MousePressTime(DXT_MOUSE DXT_MOUSE_x = DXT_MOUSE_MAX, int presstime = 0);
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
// DirectSound
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
#include
#include
#pragma comment(lib, "dsound.lib")
#pragma comment (lib, "winmm.lib")
extern IDirectSoundBuffer8 *p_ds8_2nd_buffer; //DS8セカンダリバッファ
extern DSBUFFERDESC t_ds8_buffer_desc; //DS8バッファ情報
extern DSCAPS t_ds8_caps; //DS8デバイス能力オブジェクト
extern IDirectSound8 *p_ds8_device; //DS8デバイス
BOOL CALLBACK CreateDS8DeviceCallback(LPGUID lpGuid, LPCSTR lpcstrDescription, LPCSTR lpcstrModule, LPVOID lpContext);
HRESULT CreateDS8Interface();
BOOL CALLBACK EnumDS8DeviceCallback(LPGUID lpGUID, LPCTSTR lpszDesc, LPCTSTR lpszDrvName, LPVOID lpContext);
void ReleaseDS8Interface();
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
// Functions
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
//DirectXインターフェース作成
HRESULT CreateDirectXInterface();
//DXT初期化
BOOL DXTInitialize();
//DXT終了処理
void DXTUnInitialize();
//DirectXインターフェース開放
void ReleaseDirectXInterface();
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
// Options
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
#ifdef DXT_OPTIONS
//フォントデータ構造体
struct FontData
{
int handle; //フォントハンドル
LPCWSTR name; //フォント名
int size; //フォントサイズ
DXT_FONT_STRETCH stretch; //フォント伸縮
DXT_FONT_STYLE style; //フォントスタイル
int weight; //フォント太さ
};
//フォントハンドル作成
HRESULT CreateFontToHandle(FontData *fd);
//フォントハンドル破棄
BOOL DeleteFontToHandle(FontData *fd);
//画像データ構造体
struct GraphData
{
int handle; //画像ハンドル
FLOAT height; //画像高さ
LPCWSTR name; //画像名
LPCWSTR path; //画像ファイルパス
FLOAT width; //画像幅
};
//画像オブジェクト破棄
BOOL DeleteGraph(GraphData *gd);
//画像サイズ計測
void ScaleGraphSize(GraphData *object);
//音楽データ構造体
struct SoundData
{
int handle; //音楽ハンドル
LPCWSTR name; //音楽名
LPCWSTR path; //音楽ファイルパス
};
#endif
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
// 関数マクロ
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
#define DXT_End() DXTUnInitialize() //DXT終了処理
#define DXT_Init() if (!DXTInitialize()) return 0 //DXT初期化
#define DXT_KeyDown(DXT_KEY_x) GetDI8KeyboardPressTime(DXT_KEY_x) //キーボードキー押下チェック
#define DXT_MouseClick(DXT_MOUSE_x) GetDI8MouseClick(DXT_MOUSE_x) //マウスキークリックチェック
#define DXT_MouseDown(DXT_MOUSE_x) GetDI8MousePressTime(DXT_MOUSE_x) //マウスキー押下チェック
#define DXT_PadDegree(DXT_PAD_RANGE_x) GetDI8JoystickDegree(DXT_PAD_RANGE_x) //ジョイパッド方向キー入力強度
#define DXT_PadDown(DXT_PAD_x) GetDI8JoystickPressTime(DXT_PAD_x) //ジョイパッドキー押下チェック
#define DXT_ShowWindow() if (!DXTShowWindow()) return 0 //ウインドウ表示
【時間】
ログファイル用の日付時刻取得関数しか作っていない。
高精度のタイマーを早く作らねば…。
【ログ】
ファイル出力は、基本形はできました。
エラーメッセージは全てファイル出力しますが、ライブラリ下準備関数の個々の成功は
出力しない作りにしています。
【ウインドウ】
全画面モードは、現在使わない予定です。
デスクトップ・ウインドウ・クライアント領域の相対位置関連の変数を新設しました。
あとは、アプリ立ち上げ時のクライアント領域サイズを記憶して、ワンボタンでその
サイズにいつでも戻れるようにしたり、今は縦横自由自在に伸びる画面を伸縮したまま
で、これまたボタン1つで立ち上げ時のアスペクト比に整えたりできるようにする予定
です。
【文字列描画】
画像と同様、レンダーターゲットを使って描画しているので、その気になれば拡大縮小・
回転・反転などもできますが、その機能は真の描画命令とは別の所にある関係上、他の
自作描画関数の作りや種類・使い方までにも影響を及ぼすので、細かく練りながら制作
を進めて行こうと思っています。
書式文字列描画については、放置中(放棄?)です。
【図形描画】
Direct2DでDxLibのDrawModiGraphも作れると思っていましたが、一見平面描画でも3D要素
満載だから無理?みたいです。 自分の勉強不足だけかも知れませんけど…。
あと、多角形描画は直線描画の連続で実現できますが、塗りつぶしや線が太い時の綺麗な
角の描画はどうすりゃいいんだ??? とりあえず、放置。
そんな事より、先に楕円・直線描画関数を作らねば。
【デバイス入力】
手付かずのまま、何も進んでいない。
【FPS】
とりあえず、機械任せ。
自由な数値を設定できるようにする予定。
【全体】
変数・関数を追加するに連れ、ドッと重みが増してきました。
描画関数は、汎用的な物と詳細設定できる物とその中間的な物を、軽さ別・用途別に色んな
タイプを作らないといけない感じになってきました。
Direct3Dも後々取り入れなければならないような気が…。
サウンド関数も早く作りたいのですが、タイマー無いし、描画関数他まだまだ調っていない
から、それどころではないです。
毎日チョロチョロイジってはいますが、思う様には進まないものです。
動画も扱いたいし、先は長そうだ。