描画部とゲームをインターフェイスで分離でき,かつ2D描画が簡単にできる描画ライブラリを探していたのですが
探しても見つからず,とりあえずインターフェイスを自作すればいいのではと思いました.
(ゲームコードにエンジン/ライブラリ依存性を持たせたくない)
多くの2Dゲームでもわりとよく見られるエフェクトをインターフェイス越しに実現できることが理想なのですが,
わりとスプライト描画+アルファブレンドで満足してしまうので,自分はDXライブラリのこの関数を良く使うと言った意見や
面白い2Dレンダリングのあれこれをご存知でしたらいろいろ教えてください.
※シェーダについてはまだ良く分かっていないことも多いです.勉強します.
◇描画
・動的な描画テクスチャの生成(オフスクリーン)
・スプライトの描画(位置,回転,角度,RGBA)
・矩形の描画(線/四角/楕円) ※
・文字の描画(フォント,色,大きさなどを指定するor単純にフォントテクスチャを指定する)
・(3Dモデルの描画 : いずれ検討)
◇描画設定
・ステンシルバッファのON/OFF(マスク機能)
・アルファテスト ON/OFF ※ pixelshader(PS)で対応
・描画ステートの設定変更(ブレンド/サンプラー/ラスタライザ/深度ステンシル)
◇エフェクト(良く知らない)
・PSで色変換(モノクロ調など)
... to be added.
余談ですが,複数の描画先に描画出来るようにした場合,描画先を逐次切り替える処理が無駄なので
ゲーム中で呼ばれた全ての描画関数・設定変更命令を描画先毎に全て一度ストックしてから処理する方法を考えています.
描画先指向?メモリの無駄は生じますがみなさんならどういう設計にしますか・・・?
p.s. 発端はDirect3D11で開発していて,将来的にDirect3D9でも動かしたいなと思ったからです
2D描画ライブラリインターフェイス
Re: 2D描画ライブラリインターフェイス
描画部とゲームをインターフェースで分離とは、具体的にはどういうことですか?
同じ描画APIを使いつつ、DirectXとOpenGLとソフトウェアレンダラを切り替えたい、とかそういうことですか?
IrrLichtはその3種類の描画方法を選べるようになっています。
3Dにも対応する汎用ライブラリですので、その分複雑なAPIになっています。
「2D描画が簡単にできる」の簡単のレベルがよくわかりませんが、基本的にAPIを簡単にするということは用途を絞るということですので、普及しにくくなります。つまり手に入れにくい。
DXライブラリは相当簡単な方だと思います。
同じ描画APIを使いつつ、DirectXとOpenGLとソフトウェアレンダラを切り替えたい、とかそういうことですか?
IrrLichtはその3種類の描画方法を選べるようになっています。
3Dにも対応する汎用ライブラリですので、その分複雑なAPIになっています。
「2D描画が簡単にできる」の簡単のレベルがよくわかりませんが、基本的にAPIを簡単にするということは用途を絞るということですので、普及しにくくなります。つまり手に入れにくい。
DXライブラリは相当簡単な方だと思います。
Re: 2D描画ライブラリインターフェイス
曖昧な質問だったにも拘わらず返答ありがとうございました.
同じ描画APIを使って,複数のレンダラを使いたいというのは嘘ではありませんが,
どちらかというとライブラリに依存したコードを回避するためのAPIを使いたいです。
ゲーム(自分で書く) → 描画インターフェイス★ → ライブラリのAPI → 描画
の★をいくつか揃えることができれば,あとは実装でなんとかすればいいわけですし.
例えばDXライブラリのラッパとして機能させられるかもしれません(するつもりはありました)
irrlichtとかunityなどマルチプラットフォームの3Dゲームエンジンはきちんとした作品を作るなら使用すべきだと私も思います.
ただしエンジンを"動かす"コードを書くことになりますし,どちらかというとDXライブラリやProcessing系の2D描画関数が使いたいなと思います.
複数の2Dゲームを見て,複雑な描画処理はあまり多くないのではないかと思いました.ならば用途を絞ったAPIで楽ができます.
もちろん普及させるつもりなど全くなく,機能が制限された環境でポータブルなコードが書けるようになるだけです.(そのポータブルなコードはあまり意味を成さないわけですが).実際のところ,DXライブラリが提供する機能には私は十分満足しています.
よく使われる演出が描画できないインターフェイスだけは避けたかったので,他に面白い演出ありませんか?と聞いてみました
同じ描画APIを使って,複数のレンダラを使いたいというのは嘘ではありませんが,
どちらかというとライブラリに依存したコードを回避するためのAPIを使いたいです。
ゲーム(自分で書く) → 描画インターフェイス★ → ライブラリのAPI → 描画
の★をいくつか揃えることができれば,あとは実装でなんとかすればいいわけですし.
例えばDXライブラリのラッパとして機能させられるかもしれません(するつもりはありました)
irrlichtとかunityなどマルチプラットフォームの3Dゲームエンジンはきちんとした作品を作るなら使用すべきだと私も思います.
ただしエンジンを"動かす"コードを書くことになりますし,どちらかというとDXライブラリやProcessing系の2D描画関数が使いたいなと思います.
複数の2Dゲームを見て,複雑な描画処理はあまり多くないのではないかと思いました.ならば用途を絞ったAPIで楽ができます.
もちろん普及させるつもりなど全くなく,機能が制限された環境でポータブルなコードが書けるようになるだけです.(そのポータブルなコードはあまり意味を成さないわけですが).実際のところ,DXライブラリが提供する機能には私は十分満足しています.
よく使われる演出が描画できないインターフェイスだけは避けたかったので,他に面白い演出ありませんか?と聞いてみました
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: 2D描画ライブラリインターフェイス
DXライブラリを更にラップする意図がよく分かりませんが、作っている人も自分で細かい利用機能などいちいち覚えていない可能性が高く、聞いても満足な答えが得られないと思いますので、ご自分でソース公開されているDXライブラリのゲームから使っているパターンを集計する方が良いかと思います。
あるいは、私から見ると既に内容が偏っているように見えるので、初期バージョンは自由に作ってみたほうが良いんじゃ。って気がします。
あるいは、私から見ると既に内容が偏っているように見えるので、初期バージョンは自由に作ってみたほうが良いんじゃ。って気がします。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。