確かにテクスチャの画像を動的に書き換える方法でギアの回転させる方法はちょっと
難しいですが、文字を画像にしてから伸縮や回転を、という方法は現時点の最新のバージョンでも可能です
リファレンスマニュアルには載っていませんが、ソフトウエアイメージと以下の関数を使用します
( BltStringSoftImageToHandle は BltStringSoftImage のフォントハンドルを指定するタイプです )
// ソフトウエアで扱うイメージに文字列イメージを転送する
int BltStringSoftImage(
int x, int y, const char *StrData,
int DestSIHandle, int DestEdgeSIHandle ) ;
// ソフトウエアで扱うイメージに文字列イメージを転送する( フォントハンドル使用版 )
int BltStringSoftImageToHandle(
int x, int y, const char *StrData,
int DestSIHandle, int DestEdgeSIHandle,
int FontHandle ) ;
引数は以下の通りです
x, y : ソフトウエアイメージ上の文字を描画したい座標を
StrData : 描画する文字列
DestSIHandle : 文字の本体部分を描画するソフトウエアイメージ
DestEdgeSIHandle : 文字の縁部分を描画するソフトウエアイメージ( 縁なしの場合は -1 )
FontHandle : フォントハンドル
こちらの関数を使用して縁付き文字列を画像にして2倍拡大描画する場合は以下のようになります
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
int FontHandle, ImageHandle, EdgeImageHandle, DrawWidth ;
int SoftImage, EdgeSoftImage ;
// ウインドウモードで起動
ChangeWindowMode( TRUE ) ;
// DXライブラリの初期化
if( DxLib_Init() < 0 )
return -1 ;
// 縁つきアンチエイリアスフォントの作成
FontHandle = CreateFontToHandle( NULL, 24, -1, DX_FONTTYPE_ANTIALIASING_EDGE ) ;
// 文字列イメージを転送する ARGB8形式の画面サイズのメモリイメージを作成( 縁用と二つ )
SoftImage = MakeARGB8ColorSoftImage( 640, 480 ) ;
EdgeSoftImage = MakeARGB8ColorSoftImage( 640, 480 ) ;
// 作成したメモリイメージを0で塗りつぶす
FillSoftImage( SoftImage, 0, 0, 0, 0 ) ;
FillSoftImage( EdgeSoftImage, 0, 0, 0, 0 ) ;
// 文字列イメージをメモリイメージに書き込む
BltStringSoftImageToHandle(
0, 0, "テスト文字列",
SoftImage, EdgeSoftImage,
FontHandle, FALSE ) ;
// 描画幅を取得する
DrawWidth = GetDrawStringWidthToHandle( "グラデーションテスト", lstrlen( "グラデーションテスト" ), FontHandle ) ;
// 描画幅と描画高さのグラフィックハンドルを作成する
ImageHandle = CreateGraphFromRectSoftImage( SoftImage, 0, 0, DrawWidth, 26 ) ;
EdgeImageHandle = CreateGraphFromRectSoftImage( EdgeSoftImage, 0, 0, DrawWidth, 26 ) ;
// 縁の部分は黄色で、中身の部分は赤で2倍拡大描画
SetDrawBright( 255, 255, 0 ) ;
DrawExtendGraph( 0, 0, DrawWidth * 2, 26 * 2, EdgeImageHandle, TRUE ) ;
SetDrawBright( 255, 0, 0 ) ;
DrawExtendGraph( 0, 0, DrawWidth * 2, 26 * 2, ImageHandle, TRUE ) ;
SetDrawBright( 255, 255, 255 ) ;
// キー入力待ち
WaitKey() ;
// DXライブラリの後始末
DxLib_End() ;
// ソフトの終了
return 0 ;
}
これで文字を画像にして・・・というのは実現可能です
ただ、ソフトウエアイメージには透過色付き転送が今は無いので
「普通にDrawGraphで描画可能な画像に組み立ててから実際のゲーム画面に使ったり」
の中で言われている DrawGraph が透過色を透過させる指定の描画を使用されていたら
現状ではできません
事前に画像を組み立てておいて使用する方法は、透過色で抜く部分が少なければ
何度も DrawGraph を実行しなければならないところを一回の DrawGraph で済ませる
ことができるのでその分CPUの負荷が減り有効ですが、組み立てる画像の大部分が
透過色で抜かれるような画像の場合は、画像の組み立てに使用する画像を個別で
毎フレーム DrawGraph で描画したほうがCPUへの負荷が多少増えることを考えても
GPUへの負荷が少なくて済むことのほうが大きかったりします