###################
# Nuklear GUIデモ #
###################

Nuklear GUIデモを作りました。オープンソースのGUIライブラリ「Nuklear」(https://github.com/vurtun/nuklear)を、P/ECE上で動作させたものです。

================
インストール方法
================

「nuklear.pex」をP/ECEに転送してください。

======
使い方
======

1. P/ECEのメニュー画面で、「Nuklear GUIデモ」を実行してください。
2. デモの内容は、Nuklearに付属しているoverviewと同じです。
3. P/ECEのSELECTボタンを押すと終了します。

========
操作方法
========

------------------------------
ソフトウェアキーボード非表示中
------------------------------

上下左右ボタン　　　　マウスカーソルを移動します。
Ａボタン　　　　　　　マウスの左ボタンに相当します。
Ｂボタン　　　　　　　ソフトウェアキーボードを表示します。

※マウスの右ボタンや、ホイールに相当する操作は有りません。

----------------------------
ソフトウェアキーボード表示中
----------------------------

上下左右ボタン　　　　キーを選択します。
Ａボタン　　　　　　　キーを入力します。
Ｂボタン　　　　　　　ソフトウェアキーボードを消します。

--------
いつでも
--------

ＳＥＬＥＣＴボタン　　プログラムを終了します。

========
あとがき
========

「Nuklear」(https://github.com/vurtun/nuklear)は、「イミディエートモードGUI」と呼ばれる種類の、GUIライブラリの一つです。
イミディエートモードGUIの概念については、「OpenGLやDirectXなGUIにimguiが最強すぎる」(http://qiita.com/Ushio@github/items/446d78c881334919e156)の記事がわかりやすいです。
上記の記事の中では、Nuklearとは別の、「dear imgui」(https://github.com/ocornut/imgui)というGUIライブラリが使われています。
その他にも色々なGUIライブラリがあって、「OpenGL な UI を作るライブラリ一覧」(http://qiita.com/shimacpyon/items/e5d2a4e2019273345c37)の記事が参考になります。
イミディエートモードGUIライブラリの中では、dear imguiが特に人気が高いみたいです。

dear imguiも良さそうなのですが、僕は、Nuklearが気に入りました。気に入った理由は:
・C言語(C89)のみで書かれている。
　C++言語ではなくC言語で、しかも古めのC言語で書かれているので、P/ECE開発環境のCコンパイラでもコンパイル出来ました。
・描画バックエンドが作りやすい。
　付属しているWindows GDI用の描画バックエンドのサンプルがわかりやすく、それを元にして他の環境にも移植しやすいです。

Windows GDI用のサンプルを元にして、P/ECE用の描画バックエンドを実装してみたところ、P/ECE上でも問題無く動作しました。
P/ECEのアプリケーションでも、GUIを使いたいケースが時々有るので、このライブラリは便利に使えそうです。

とはいえ、NuklearをP/ECEで使うと少し問題もあって:
・コードサイズが大きすぎます。
　Nuklearだけで、P/ECEのメモリの2/3〜4/3ぐらい使ってしまい、アプリケーション本体が使えるメモリが少ししか残りません。
　GUI主体のアプリケーションならばそれでも構わないのですけれど、ゲームの設定画面とかに使うのはちょっと厳しそうです。
　Nuklearのソースには、P/ECEには不要な部分も多く含まれているので、それらを削ればもう少し小さくなるかも知れません。
　もっとも、P/ECEにとってはコードサイズが大きいというだけで、Windowsで使った場合はサイズの問題はありませんでした。
・GUIの描画が少し遅めです。
　特に、テキストの折り返し処理が遅いみたいで、長いテキストを表示するGUI画面を表示すると、動作がかなり重くなります。
　長いテキストを一つのラベルで折り返して表示するよりも、短いテキストを複数のラベルで表示する方が、多少早いようです。
　もっとも、P/ECEにとっては重い処理というだけで、Windowsで使った場合は速度の問題はありませんでした。

Nuklear自体まだ発展途上みたいで、APIが変わったり、多少動作があやしい点も有りますが、現時点でも十分実用的に使えます。
今後も引き続き、利用させて頂こうと思いました。

==================
Sun Nov 20 2016
Naoyuki Sawa
nsawa@piece-me.org
==================
