私は単純なピクセルアートスプライトを持つゲームに取り組んでいます。私はそれをスケーラブル(私は全体のゲームグラフィックスカイズを意味しているので)、私はピクセルのアートに適した良いスケーリングアルゴリズムを実装したいと考えています。これは私がすべてのスプライトをスケールできるようにHQXを見つけました。リアルタイムで)これらの新しいバージョンを使用してください。JavaでCコードを使用するためのクイックステップ
CコードでこのHQXアルゴリズムの実装が見つかりました。すべてがソースイメージのuint32_t
配列をとり、スプライトのスケーリングされたバージョンで既に割り当てられている新しいuint32_t
配列を埋め込む単純な関数になります。ターゲットはスタンドアロンまたはライブラリとして構築することができるように、二つのシンボルが
#if defined(__GNUC__)
#ifdef __MINGW32__
#define HQX_CALLCONV __stdcall
#else
#define HQX_CALLCONV
#endif
#else
#define HQX_CALLCONV
#endif
#if defined(_WIN32)
#ifdef DLL_EXPORT
#define HQX_API __declspec(dllexport)
#else
#define HQX_API __declspec(dllimport)
#endif
#else
#define HQX_API
#endif
として宣言されている場合
署名はちょうど
HQX_API void HQX_CALLCONV hq2x_32(uint32_t * sp, uint32_t * dp, int Xres, int Yres)
です。
私がしたいことは、Javaのthorugh JNIからこのメソッドを呼び出すことです。どのタスクを実行する必要がありますか?さらに、パフォーマンスが問題になるかどうかを知りたいので、JNI呼び出しが高価な場合でも、すべてのスプライトに対して呼び出しが行われます(しかし、おそらく、 JVMとネイティブコードから前後にコピーされます)。
..私は両方の言語(JavaとCを)知っているので、私はちょうどそう私はちょうどJNI参照を取得し、それを勉強よ、それは簡単な十分だと仮定すると、この作業を行う際に必要な手順を知っておく必要がありますありがとうございます
実際には、アプリケーションの起動時にスプライトを書くことは決してありません。私はJNAを短期間で確認します。その間にありがとうございます:) – Jack
すべてのプラットフォームに異なるコンパイル済みのものを提供する必要がありますか?私はそれがまだ何かを知らないので、JNIではいと思う、JNAではわからない。 – Jack
Javaコードのコンパイルを1回行うことはできますが、プラットフォームごとに異なるネイティブライブラリが必要になります。 JNIでは、JNIネイティブメソッドを実装するためのネイティブライブラリと、HQXに必要なネイティブライブラリが必要です。 JNAでは、HQX用に入手または構築したネイティブライブラリ以外のネイティブライブラリは必要ありません。 –