ユーザ用ツール

サイト用ツール


flatlib3

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
最新のリビジョン両方とも次のリビジョン
flatlib3 [2014/08/30 11:04] – [script] ogaflatlib3 [2015/11/29 16:12] – [特徴] oga
行 11: 行 11:
   * Multi Platform 対応   * Multi Platform 対応
     * 独自の build system で、開発 HOST も Windows, Mac OS X, Linux どれでも OK     * 独自の build system で、開発 HOST も Windows, Mac OS X, Linux どれでも OK
-      * アプリケーション自体は VisualStudio, Xcode, AndroidStudio/Eclipse 等の IDE を使います+      * アプリケーション自体は VisualStudio, Xcode, AndroidStudio 等の IDE を使います
   * Database Backend   * Database Backend
     * On memory の data 構造 (Script 系言語の 連想配列, Dictionary, Hash 等の機能に近いもの)、明確な型付けあり     * On memory の data 構造 (Script 系言語の 連想配列, Dictionary, Hash 等の機能に近いもの)、明確な型付けあり
-    * リソース管理、データフォーマット、モジュール&タスク管理、その他の基盤として活用+    * リソース管理、データフォーマット、モジュール&タスク管理、その他のバックエンドとして活用
   * テキストベースのデータファイルフォーマット   * テキストベースのデータファイルフォーマット
-    * Xml では無いので高速な読み書きが可能 
-      * デバッグのため人間が見ても理解しやすく編集しやすい 
-      * 読み書きが高速に行えるように設計 
-      * パーサーの作成が容易で行単位でデコード可能 
-      * 型情報が保存される 
-      * 直接読み込んでそのまま利用できる 
-      * テクスチャのように最初からバイナリの情報は含まないため、サイズが肥大しない 
       * 自由度が高く冗長性を持たせることが可能。情報が増えても上位互換性を保つことができる       * 自由度が高く冗長性を持たせることが可能。情報が増えても上位互換性を保つことができる
-      * バイナリ化対応予定 (未完成)+      * バイナリ化対応予定 (flatlib4 で実装)
   * Script Engine (FlatScript)   * Script Engine (FlatScript)
     * 独自の Script 言語、Compiler & VM     * 独自の Script 言語、Compiler & VM
-    * ほぼ <nowiki>C++</nowiki> 相当+    * ほぼ <nowiki>C++</nowiki> に近いサブセット
   * 共通 Module API   * 共通 Module API
     * <nowiki>C++</nowiki> で実装した Module は、FlatScript だけでなく他の言語からも利用可能     * <nowiki>C++</nowiki> で実装した Module は、FlatScript だけでなく他の言語からも利用可能
行 33: 行 26:
   * 仮想ファイルシステム   * 仮想ファイルシステム
     * プラットフォームごとに異なる Data path を統一化できる     * プラットフォームごとに異なる Data path を統一化できる
-    * Zip File の Mount 等、アーカイブファイルを File API で読み込み可能 +    * アーカイブファイルを File API で読み込み可能
-    * Network による Remote Access 対応+
   * 開発効率を向上させるための軽量&高速なデータ開発サイクル   * 開発効率を向上させるための軽量&高速なデータ開発サイクル
     * プログラムの再コンパイルなしにデータやスクリプトを更新可能     * プログラムの再コンパイルなしにデータやスクリプトを更新可能
-  * 外部依存ライブラリなし +  * 最小限の外部依存ライブラリ 
-    * 機能は flatib3 自身で実装しているので、基本的には各 Platform 毎の標準ライブラリのみで実行可能 +    * 出来る限り flatib3 自身で実装しているので、基本的には各 Platform 毎の標準ライブラリのみで実行可能
-      * 唯一の例外: Windows のみ zlib が必要。(zlib は他の Platform では標準 API)+
   * 描画関連   * 描画関連
     * 頂点データ形式が自由でシェーダーとのマッチングも自動     * 頂点データ形式が自由でシェーダーとのマッチングも自動
行 46: 行 37:
       * ハードウエアにとって最も効率が良いフォーマットを選んで描画することが可能       * ハードウエアにとって最も効率が良いフォーマットを選んで描画することが可能
         * 複数フォーマットに対応したコンバータを開発予定         * 複数フォーマットに対応したコンバータを開発予定
-    * 膨大になりがちなシェーダー管理自動化 +    * シェーダー管理自動化
- +
- +
- +
- +
  
  
行 57: 行 43:
  
   * Windows x86/x64   * Windows x86/x64
-    * OpenGL 4.x / OpenGL ES 2.0, 3.0 (各種Emulator/OpenGL 4.x ES互換モード) / DirectSound/DirectShow/OpenAL +    * Direct3D 12 (DirectX 12) 
-    * 主に開発ツール用 +    * OpenGL 4.x / OpenGL ES 2.0, 3.0, 3.1 (各種Emulator/OpenGL 4.x ES互換モード) / DirectSound/DirectShow/OpenAL 
-  * Android +  * Android armeabi/armeabi-v7a/arm64-v8a/mips/mips64/x86/x86_64 
-    * OpenGL ES 2.0 / OpenGL ES 3.0 / OpenSL+    * OpenGL ES 2.03.0, 3.1 / OpenSL
   * iOS armv7/armv7s/arm64   * iOS armv7/armv7s/arm64
-    * Metal / OpenGL ES 2.0 / OpenGL ES 3.0 / OpenAL+    * Metal / OpenGL ES 2.03.0 / OpenAL
   * Linux x86/x86_64/armv7l/armv6l   * Linux x86/x86_64/armv7l/armv6l
-    * OpenGL 4.x / OpenGL ES 2.0, 3.0 / OpenAL+    * OpenGL 4.x / OpenGL ES 2.0, 3.0, 3.1 / OpenAL
   * Mac OSX x86_64   * Mac OSX x86_64
-    * OpenGL 4.1 / OpenAL+    * Metal / OpenGL 4.1 / OpenAL
   * Web Emscripten   * Web Emscripten
     * WebGL     * WebGL
  
 +  * 64bit 対応
   * <nowiki>C++11</nowiki> 対応コンパイラが必要 (VS2013, gcc4.7, clang 3.1 以上)   * <nowiki>C++11</nowiki> 対応コンパイラが必要 (VS2013, gcc4.7, clang 3.1 以上)
  
行 76: 行 63:
 ===== 対応ツール ===== ===== 対応ツール =====
  
-  * Maya 2014+  * Maya 2014~2016
     * データ export プラグイン(mll) &ツール(mel) (現在 Windows x64 のみ)     * データ export プラグイン(mll) &ツール(mel) (現在 Windows x64 のみ)
     * Model, Light, Camera, Material, Animation     * Model, Light, Camera, Material, Animation
行 85: 行 72:
       * Maya TangentSpace / 独自 TangentSpace 対応       * Maya TangentSpace / 独自 TangentSpace 対応
  
-  * Blender 2.69+  * Blender 2.69
     * データ export プラグイン     * データ export プラグイン
       * 現状 単純な Model のみ       * 現状 単純な Model のみ
行 109: 行 96:
  
   * モデルデータビュア   * モデルデータビュア
-    * Windows, Android, iOS, MacOS, Linux (armv7l)+    * Windows, Android, iOS, MacOSX, Linux (x86_64,armv7l), browser (WebGL) 
 + 
 +  * Texture Converter 
 +    * Mipmap, Cubemap, 3D, Array 対応 
 +    * flat-script による自動処理に対応 
 +    * BC(DXT), PVRTCv1, PVRTCv2, ATITC, ETC1, ETC2-EAC, ASTC 変換 (外部 dll が必要)
  
  
行 127: 行 119:
   * マルチプラットフォーム用共通ライブラリ   * マルチプラットフォーム用共通ライブラリ
     * Memory 管理     * Memory 管理
-    * FileSystem (仮想パスへの Mount が可能。Zip file を直接 FileSystem に Mount 可能)+    * FileSystem
     * Thread API (Lock, Queue 他)     * Thread API (Lock, Queue 他)
-    * Database (JavaScript などの Object のようなもの、オンメモリ)+    * Database
     * Module 管理     * Module 管理
     * Slice (Task/Event)     * Slice (Task/Event)
行 135: 行 127:
     * Encoding (文字コードアクセス、変換)     * Encoding (文字コードアクセス、変換)
     * その他     * その他
-      * 圧縮&解凍、vector (Linear,Heap,Ordered,Addressable)、他+
  
  
行 152: 行 144:
   * モデルフォーマット   * モデルフォーマット
     * 独自形式 a7     * 独自形式 a7
-    * テキスト形式で、人間が見て読み書き可能。 
-    * テキストのままアプリケーションがロード可能。 
-      * 行単位のパースが可能で高速に読み込める 
-      * Database と共通 API でアクセスできる 
-    * 事前に変換したバイナリ形式に対応予定 
  
 ==== event ==== ==== event ====
行 175: 行 162:
   * コンテキスト (VM) はわずか 36byte (64bit時は 64byte) + スタック領域 のみ。いくらでもインスタンス化可能   * コンテキスト (VM) はわずか 36byte (64bit時は 64byte) + スタック領域 のみ。いくらでもインスタンス化可能
   * 実行コンテキストの任意中断による非同期処理が可能   * 実行コンテキストの任意中断による非同期処理が可能
-  * <nowiki>C++</nowiki> 構文なので、Text Editor の syntax ハイライトや補佐機能が活用できる+  * <nowiki>C++</nowiki> 構文なので、Text Editor の syntax ハイライトや等の補佐機能が活用できる 
 +  * 最小限のプリプロセッサ機能 (C# の プリプロセッサに近いが、include や数値定義が可能)
   * 構文が同じなので、enum 等のシンボル値をアプリケーションと共有可能   * 構文が同じなので、enum 等のシンボル値をアプリケーションと共有可能
   * アプリケーションとバイナリの完全な分離   * アプリケーションとバイナリの完全な分離
行 182: 行 170:
   * static な Lambda 式風構文 (インラインで記述できるがオブジェクトを伴わない、<nowiki>C++11</nowiki> の構文を採用、クロージャーではない)   * static な Lambda 式風構文 (インラインで記述できるがオブジェクトを伴わない、<nowiki>C++11</nowiki> の構文を採用、クロージャーではない)
   * 64bit プラットフォームに完全対応   * 64bit プラットフォームに完全対応
 +  * Script 自体が動的な暗黙のオブジェクトの生成は行わない。
 +    * メモリアロケートが発生する処理は <nowiki>C++</nowiki> で記述した命令 (Module API) を利用する
 +  * 言語単体は最小限で、それ以外の機能はすべて <nowiki>C++</nowiki> 側で作成した Module API に依存
 +    * Module API 自体は FlatScript 以外の言語からも呼び出しできる
 +  * string 型無し、静的なテキストのみ
 +
  
  
行 193: 行 187:
     * 挙動は script で記述可能     * 挙動は script で記述可能
  
 +++++ FlatScript の例|
 +
 +<code c++>
 +// ただの C++ に見えますが FlatScript です
 +class MyWindow : public ListWindow {
 +
 +    static MyWindow Create( stirng name )
 +    {
 +        return  iWindowModule->Create( name, "ListWindowM" );
 +    }
 +
 +    void Init( MyWindow this )
 +    {
 +        this->SetScript( GetScriptName() );
 +        this->SetEvent( "MyWindow:" );
 +
 + this->SetPosition( 2.0f, 16.0f );
 + this->SetSize( 400.0f, 600.0f );
 +
 + this.Title= "MyWindow title"; // プロパティ
 + this.LineHeight= 64.0f;
 +
 + // ボタンを押した時の動作
 + this.AddItem( "<Back",
 +     []( MyWindow this ){ // C++11 Lambda 構文
 +     this->Close();
 +     });
 +
 +    this->Focus( WINDOW_FLAG_DMT );
 +    }
 +};
 +</code>
 +
 +
 +++++
  
 ==== sound ==== ==== sound ====
行 213: 行 242:
 ==== image5 ==== ==== image5 ====
  
-  * テクスチャツール用 (未完成)+  * テクスチャツール用 API 
 +  * テクスチャ画像の読み込みと変換 
 +  * Mipmap, Cubemap, 3D, Array 対応 
 +  * dds, ktx, pvr3, pvr2, bmp 形式の読み書きに対応 
 + 
  
  

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki