過去の更新履歴 - Siv3D/Reference-JP GitHub Wiki
2016 年以降の更新は こちら
新機能
- 画面を MP4 / GIF アニメーションで録画する機能
- [Ctrl] + [PrintScreen] キーで画面の録画開始/停止をするように
- QR コード検出の位置を取得する機能
- JSONReader のコンストラクタ引数で文字コードを指定できるように (Thanks 紙袋, 砂時 計)
- JSONReader エスケープ対応 (Thanks 砂時 計)
バグ修正
- デフォルトのフォントの大きさが正しくなくなる不具合が生じたため、フォントを以前のものに差し替え
- Easing::Bounce の EaseIn と EaseOut が逆になっていたバグを修正 (Thanks @Rinifisu)
- SoundListener のスペルミスを修正 (Thanks 砂時 計)
- Material::diffuseaTextureName のスペルミスを修正 (Thanks 砂時 計)
- 一部の .m4a ファイルが読み込めなくなった問題を修正 (Thanks @hat_a2c)
- 対応していない AAC ファイルをオープンした際にクラッシュしたバグを修正
新機能
- 2D 描画時のカスタムピクセルシェーダ
- QR コード生成機能
- QR コード読み取り機能
- キーやボタンの組み合わせ機能 (Thanks gorei50)
- 再生中にタイムストレッチとピッチシフトができる DynamicSound
- サウンドの拍のカウントを補助する SoundBeat クラス
- 最終画像へのカスタムピクセルシェーダ
- 視線入力デバイス「Tobii EyeX」に対応
- Zip ファイルから画像や音楽ファイルを直接ロードする機能
- ゲームパッドの POV 入力に対応 (Thanks @NS_nusuru, @RYOSKATE)
- JSON の読み込み
- AES 128-bit CBC によるデータの暗号・復号機能
- Python スタイルの Format に対応
- Xorshift を使う乱数エンジンを追加
- 円柱座標を表す Cylindrical 型を追加
- 球面座標を表す Spherical 型を追加
- 往復する Easing を使いやすくする EasingController クラス
- Image の各種画像処理メンバ関数に、自身を変更せず新しい Image を作って返すものを追加
- 2 つの画像の類似度 (SSIM) を計算する機能を追加
- Twitter のスクリーンネーム、ユーザ ID の取得に対応
- Twitter に複数の画像を投稿する機能を追加
- HTTP リクエスト(GET/POST) 機能を追加
- ファイルのダウンロード先として MemoryReader を指定可能に
- MIDI メッセージによる音楽演奏に対応
- 他のアプリケーションを起動し、プロセスを管理する System::CreateProcess() 関数を追加 (Thanks @hasetwo, @Wp120_3238)
- Wave の任意の範囲への Waving::ChangeTempo() / ChangePitchSemitones() に対応
- キーやボタンが押されてからの経過時間をミリ秒で示す Key::pressedDuration プロパティを追加 (Thanks axel)
- 3D サウンドとドップラー効果に対応
- Sound のフェードイン・フェードアウト (Thanks@Rinifisu)
- Sound の中身の Wave を動的に更新する Sound::fill()
- vSync の有効無効を切り替える Graphics::SetVSyncEnabled() (Thanks @Pctg_x8)
- for ループを短く記述する step クラス
- 座標を指定できるデバッグテキスト出力 PutText()
- char16 型、char32 型を追加
- Optional::then() に、値が none の際に実行する関数を指定するオーバーロードを追加
- 変換に失敗したときに none を返す FromStringOpt() 関数を追加
- タイマーが一時停止中である場合だけ再開する Timer::resume() メンバ関数を追加
- IReader::read(void* buffer, int64 pos, int64 size) オーバーロードを追加
- String::release() メンバ関数を追加
- Grid::rerelase() メンバ関数を追加
- MemoryReader::asArray() メンバ関数を追加
- TextReader, CSVReader, INIReader の読み込み関数に IReader&& のオーバーロードを追加
- BinaryReader::read(Type&) オーバーロードを追加
- Circle 内に一様分布するランダムな Vec2 を返す RandomVec2(Circle) オーバーロードを追加
- Ellipse::Ellipse(RectF) オーバーロードを追加
- Rect::Rect(int), RectF::RectF(double) オーバーロードを追加
- Rect, RectF に scaled() メンバ関数を追加
- RoundRect::set()
- Timer に isPaused プロパティを追加
- INI ファイルの書き出し時、セクションやパラメータをアルファベット順にソートするフラグを追加 (Thanks@GRGSIBERIA)
- operator[] による、簡易な INI データ書き出し機能を追加
- RandomVec2(), RandomVec2(double) オーバーロード (Thanks@agehama_)
- RandomVec3(), RandomVec3(double) オーバーロード (Thanks@agehama_)
- WAVE の出力形式に 8bit PCM と 32bit-float PCM を追加
- 24bit PCM WAVE ファイルの読み込みに対応 (Thanks @hamukun8686)
- RandomPoint(Rect), RandomVec2(RectF) オーバーロード (Thanks @hamukun8686)
- PlusCombinedKeys::key1 / key2 プロパティを追加
- RandomSelect() のオーバーロードを追加 (Thanks @wx257osn2)
- 仮想フルスクリーンを簡単に構築する Window::SetVirtualFullscreen() (Thanks gorei50)
- Noise のメンバ関数に、Vec2, Vec3 を引数にとるオーバーロードを追加
- ピッチとテンポを同時に変更する Waving::ChangeTempoAndPitchSemitones() を追加
- Image::release(), Wave::release() を追加
- XInput のアナログスティック入力を 4 方向、8 方向で返す機能を追加 (Thanks whojinn)
- Mat3x2 のフォーマットに対応
- Console::Close() を追加
- 大きさに関わらず常にテクスチャを使う Circle::drawAsTexture() を追加
- 四角錐を作成する MeshData::Pyramid()
- 双四角錐を作成する MeshData::Bipyramid()
パフォーマンス改善
- ファイルオープン時の速度向上
- ToString() を 1.3 倍以上高速化
- Format() を 1.3 倍以上高速化
- 数値型の Parse() を 5 倍以上高速化
- Graphics3D::DrawParticlesForward() によるパーティクル描画を 1.5 倍程度高速化
- MIDI 再生時の CPU 消費を低減
- Base64 エンコードを 2 倍以上高速化
- Base64 デコードを 数倍高速化
- バグ修正
- libmpg123.dll が原因でアプリの起動に失敗することがあった問題を修正
- 他のアプリで開かれているファイルの読み込みに失敗することがあった問題を修正 (Thanks @Mitsugoro32)
- Wave / Sound にオーディオファイル以外のパスを渡した際にクラッシュしたバグを修正 (Thanks @Pctg_x8)
- ループ無し MIDI 再生の途中で Pause() すると 1 回だけ余計にループ再生されたバグを修正
- フォルダ選択ダイアログで初期フォルダが反映されなかったバグを修正 (Thanks furafura)
- Siv3D アプリを、それに関連付けしたファイルからオープンした際のカレントディレクトリの問題を修正 (Thanks 夢旅人)
- プログラムの実行中に解像度を変更した際、ScreenCapture がクラッシュすることがあったバグを修正
- 一部 の Intel の iGPU で Particle の色が正しくならなかった問題を部分的に修正
- int * Point のオーバーロードの問題を修正
- FileSystem::Copy() / Rename() で送り先に絶対パスを使うと関数が失敗したバグを修正 (Thanks ao1415)
- 空白文字だけの文字列の String::trim() が不正になったバグを修正 (Thanks @rekkuuzadx)
- Abs() のオーバーロードの問題を修正
- Easing::Cubic が正しくなかったバグを修正 (Thanks @Rinifisu)
- Line::intersects() と Line::intersectsAt() の結果が一致しないことがあったバグを修正 (Thanks @__roxion1377)
- Imaging::Blur() で入力と出力の Image が同じ場合、ガウスブラーが適用されていたバグを修正
- CustomImage::toImage() の不具合を修正
- Twitter 投稿機能の安定性を改善
- XInput::setLeftTriggerDeadZone(), setLeftThumbDeadZone() のスペルミスを修正 (Thanks asachun)
- Grid の Format がコンパイルエラーになったバグを修正
- Grid がコンパイルできなかったバグを修正 (Thanks ao1415)
- ライブラリ内のクラス名に関わるリンカの問題を修正 (Thanks @whojinn)
- Box2D アドオンを修正
- SceneManager で フェード時間を 0 に設定したときの不具合を修正 (Thanks @DragonIcecle)
- Mat4x4 の Parse ができなかったバグを修正
- Console::Open() で起動したコンソールウィンドウに日本語を入力したときの不具合を修正
- HamFramework で # define NO_S3D_USING が使えなかった問題を修正
- 空の Model を扱うとクラッシュしたバグを修正
仕様変更
- EaseIn() / EaseOut() / EaseInOut() の引数の順番を変更
- 一部の Point 型を Point の typedef である Size 型に変更
- GamepadButton 型を Key 型に統合
- PlusCombinedKeys::pressed は key1 が key2 より先か同時に押されていないと true を返さないよう仕様変更
- Sound::setVolume(double) と Sound::setVolume(double,double) でそれぞれ設定した音量が二重に適用されないよう仕様変更
- Noise を PerlinNoise に名称変更
- Image::negative() を Image::negate() に名称変更
- Image::brightness() を Image::brighten() に名称変更
- Image::gamma() を Image::gammaCorrect() に名称変更
- Image::gaussian() を Image::gaussianBlur() に名称変更
- フォルダを示す FilePath は末尾に L'/' 付きで返されるよう仕様変更
- 浮動小数点数の無限大、NaN の文字列表現を、inf, nan に仕様変更
- Math::Isfinite(), Math::Isinf(), Math::Isnan() を廃止。IsFinite(), IsInfinity(), IsNaN() を使うように
- Image::saveJPEG2000() の compressionRatio の最大値を 100 から 1000 に仕様変更
- Polygon::centroid は多角形が空の時 Vec2::Zero を返すよう仕様変更 (Thanks @hamukun8686)
- TwitterClient の experimental 名前空間を外した
- OpsnSSL への依存を解消
- Waving::ChangeTempo() の上限を 100.0 から 10.0 に仕様変更
- System::Sleep() を System::SleepAccurately() に名称変更し、System::Sleep() は精度は低いが負荷の無いスリープに仕様変更
- SceneManagerOption::ShowSceneName を指定した際の表示フォントを変更
- ISiv3DAddon を IAddon に名称変更
- Pentablet::IsEnable() を Pentablet::IsAvailable() に名称変更
- Recorder::IsEnd() を Recorder::IsEnded() に名称変更
- Recorder::GetPos() を Recorder::GetPosSample() に名称変更
その他
- 付属の UmePlus フォントを 20150115 に更新
- Siv3D.hpp で include しているヘッダにコメントを追加 (Thanks @agehama_)
- libpng のバージョンを 1.6.12 から 1.6.16 に更新
- libwebp のバージョンを 0.4.0 から 0.4.3 に更新
- ドキュメントの追加
- Example フォルダに siv3d-kun.png を追加
- Example フォルダに test.ini を追加
- Example フォルダに test.csv を追加
- Example フォルダに test.json を追加
- Example フォルダに test.txt を追加
- Example フォルダにサンプルのピクセルシェーダを追加
- Example フォルダに OBJ ファイルのサンプルを追加
- Package フォルダの Asset を削除
バグ修正
- パラメータによってはパーティクルが描画されなかったバグを修正
- Sprite::drawSubset() と Mesh::drawSubset() でパラメータによっては描画ができなかったバグを修正
バグ修正
- Font の縁取りでメモリリークが発生したバグを修正 (Thanks furafura)
- Font の縁取りで外周に灰色が混じり、フォントの画質が低下していたバグを修正
- FromString() が 2147483648 以上の数を扱えなかったバグを修正
- DragDrop, Dialog, Clipboard で パス区切り文字が L'/' に統一されていなかった問題を修正 (Thanks furafura)
- NO_S3D_USING と <HamFramework.hpp> を同時に使用できなかった不具合を修正 仕様変更
- HamFramework の Sequence を Scene へ名称変更
- ウィンドウが非アクティブな時に Cursor::SetPos() を無効にするよう仕様改善 (Thanks @hamukun8686)
- その他細かい仕様の修正 その他
- ドキュメントの加筆修正
新機能
- グラフィカルな演出効果を簡単に記述・コントロールできる Effect クラス
- Circle::drawShadow()
- RoundRect::drawShadow()
- フォントの縁取り
- ムービーファイルの再生
- プレイムービー(音は無し)の保存機能
- シーン管理ユーティリティ (Thanks @hamukun8686)
- ファイルのアーカイブ機能
- Mesh::drawSubset(), TransformedMesh::drawSubset()
- Easing 関数
- CustomImage に operator bool() を追加
- Grid::getArray() メンバ関数を追加
- Rect から平行四辺形を作る Rect::shearedX(), Rect::shearedY() (Thanks @hamukun8686)
- 指定したファイルを外部のアプリで開く System::LaunchFile() 関数
- 指定したファイルやフォルダをエクスプローラー上で開く System::ExploreFolder() 関数
- 2 つの Vec3 をつなぐ Cylinder / Cone を作成するコンストラクタオーバーロードを追加
- MeshData::Cylinder(), MeshData::Cone() に分割数を指定する引数を追加
- Rect::set(), Circle::set() メンバ関数を追加
- 固定サイズの整数型 (uint8, uint16 , ...) の定義を追加
- Mat3x2 型を追加
- Polygon::drawWireframe() に thickness パラメータを追加
- Graphics2D::SetUVTransform() 関数を追加
- 数学関数の引数の型の柔軟性を改善
- 小さな Circle を Texture で描画する最適化をオフにする Circle::drawAsPolygon() メンバ関数を追加
- メモリからのフォント登録
- Grid::push_row() / pop_row() メンバ関数を追加
- C++ 標準出力のためのコンソールウィンドウを起動する Console::Open() 関数を追加
- LeapMotion::Finger に velocity プロパティを追加
- Mesh::scaled(double), TransformedMesh::scaled(double) オーバーロードを追加
- Sprite にインデックスのオフセットとサイズを指定して描画する drawSubset() メンバ関数を追加
- Graphics3D::DrawParticlesForward() にパーティクルのオフセットとサイズを指定するオーバーロードを追加
- IReader による AAC / WMA 読み込み
- Circle::scaled() メンバ関数を追加
- BlendState::Multiplicative2X を追加
パフォーマンス改善
- Triangle::draw() の CPU コストを削減
バグ修正
- November 2014 で LoadImmediately を指定していないアセットが登録時にロードされていたバグを修正
- November 2014 で SoundAsset, TextureAsset 登録時の設定が反映されないことがあったバグを修正
- November 2014 で Graphics2D::SetTransform() で拡大縮小時に、Circle::draw() の大きさが正しくなかったバグを修正
- November 2014 で DynamicTexture::fill() が一部のサイズの画像に対して極端に遅くなったバグを修正 (Thanks @Rinifisu)
- TransformedMesh::drawForward() で行列が反映されていなかったバグを修正
- Optional のテンプレート引数に String や Array を使うとランタイムエラーが発生することがあったバグを修正
- 外部アプリでオープンされているファイルを INIReader で読み込むと制御が返ってこなかったバグを修正 (Thanks furafura)
- Grid::clear() 後に Grid::height が正しくない値を返していたバグを修正
- フルスクリーン→ウィンドウの切り替えで解像度に制限があった問題を修正 (Thanks 砂時 計)
- Rect::drawShadow() による小さな影の描画が正しくなかったバグを修正
仕様変更
- Integer, Double 型などを廃止、同等の機能は ToString(), FromString() など SivNumber.hpp の関数に移行
- Line, Circle の描画位置オフセット (0.5, 0.5) を廃止
- Graphics2D::SetTransform() は引数に Mat3x2 型をとるよう仕様変更
- ファイルのパス区切り文字を L'/' に統一 (Thanks furafura)
- Cone の法線を修正
- スクリーンショット関連の機能を Graphics 名前空間から ScreenCapture 名前空間に移動、関数の名称を一部変更
- CopyOption 列挙子の名称を変更
- FileSystem::DirectoryContents() は絶対パスを返すよう仕様変更
- String::maxSize, capacity プロパティをメンバ関数に変更
- Archive 名前空間を Compression に名称変更
- FileSystem 関数群に空の文字列を渡した場合、必ず関数が失敗するよう仕様を統一 (Thanks furafura)
- パフォーマンスの低下を招いていたため、アセット管理においてデフォルトでは元のファイルが更新された時に、アセットの内容を更新しないよう仕様変更 (Thanks @Mitsugoro32)
その他
- ドキュメントの加筆修正 (Thanks 砂時 計)
新機能
- FontStyle にビットマップ形式を追加 (Thanks @Mitsugoro32)
- 3D プリミティブに asMesh() メンバ関数を追加
- ウィンドウの縦横比を返す Window::AspectRatio() 関数 (Thanks @ChunChunMorning)
バグ修正
- TransformedMesh::draw() / drawForward() が使えなかったバグを修正
- Align::Right の typo を修正 (Thanks @Pctg_x8)
- ウィンドウ外に出てしまっていた日本語入力ウィンドウを、クライアント領域左上に表示するよう改善
- Numpad とファンクションキーが Input::Key で正しく取得できなかったバグを修正 (Thanks 砂時 計)
- Print() で出力するテキストのフォントサイズが正しくないことがあったバグを修正
- AAC, WMA の読み込みでアプリケーションの動作が止まることがあった問題を修正 (Thanks @Mitsugoro32)
- フォント描画時にクラッシュすることがあったバグを修正
- 一部の WAVE ファイルの読み込みのバグを修正
仕様変更
- Input::EnumerateJoypads() を Input::EnumerateGamepads() に名称変更
- Audio::GetProperty() でタイトル情報を取得できなかった場合、ファイル名をタイトルにするよう仕様変更
- AAC, WMA のメモリからの読み込み機能を無効に
- フォントの品質を改善
その他
- ドキュメントの修正、追加
新機能
- 新しい標準 GUI
- 写真やイラストから顔を検出する機能 (Thanks @hamukun8686)
- OAuth を使ったツイッタークライアント機能(つぶやき、画像の投稿)
- Polygon を太らせる機能
- 長方形に影をつける Rect::drawShadow() を追加
- 2D 形状から 3D 形状をつくる機能
- Kinect v2 に対応
- Leap Motion V2 に対応
- AVI ムービーからフレームを指定して Image を取得する VideoReader クラス
- ファイルとフォルダの圧縮・伸長
- CSV ファイルを書き出す CSVWriter (Thanks @RYOSKATE)
- INI ファイルを書き出す INIWriter
- Polygon が穴あきに対応
- 複数の Polygon から構成される MultiPolygon 型
- 録音デバイスの一覧取得と、使用するデバイスの指定が可能に (Thanks @GRGSIBERIA)
- XInput コントローラにデッドゾーンの指定が可能に
- Web カメラ / 録画デバイスの一覧取得と、使用するデバイスの指定が可能に
- Windows 8 以降では DirectX ランタイムのインストールが不要に
- Font に太文字とイタリックを指定可能に
- ユーザが独自に作成した Widget を GUI に追加可能に
- Forward Rendering でも 1 つの光源を指定可能に
- Forward Rendering ではメッシュごとに Light, Fog を指定可能に
- 3D モデルのロード、Mesh の作成時に Bounding Box を計算する機能を追加
- Float / Double に isNan, isFinite, isInfinity プロパティを追加
- Microseconds, Nanoseconds 型を追加
- MicrosecTimer
- CopyOption に Confirm_If_Exists と Rename_If_Exists を追加 (Thanks @Rinifisu)
- フォルダの中身だけを削除する FiliSystem::RemoveContents()
- フォルダの中身だけを移動する FileSystem::MoveContents()
- Filesystem::Remove() / RemoveContents() の第2引数で、ごみ箱に送るかどうかを選択可能に (Thanks @Rinifisu)
- IReader / IWriter インタフェース
- 正規表現に一致するすべてのマッチを返す Regex::Search()
- 二次元配列のための Grid クラス
- C++14 std::exchange() に相当する s3d::Exchange()
- ユーザやコンピュータのユニーク ID を取得する機能
- Circular における theta = 0 の位置を 0, 3, 6, 9 時の方向で指定する CirclularBase テンプレート (Thanks @hamukun8686)
- LineString のメンバ関数を拡充
- Polygon に重心の座標を返す centroid() メンバ関数を追加
- Polygon に頂点、インデックス、分割後の三角形にアクセスするメンバ関数を追加
- ランダムな色を作る関数を追加
- LineString, Ellipse 等のあたり判定を追加
- Ellipse に top, bottom, left, right, boundingRect プロパティを追加
- Line どうしの交点を求める Line::intersectsAt()
- Image::getPixel() / sample() に Wrap, Mirror, Clamp の 3 種類のアドレスモードを指定する機能
- Image に size, num_pixels プロパティを追加
- LineString に toCatmullRomSpline() メンバ関数を追加
- 各種画像ファイルのメモリ出力とメモリからの読み込みに対応
- Image::threshold() に、白黒を反転するための引数を追加
- Color / ColorF に setRGB() メンバ関数を追加
- 適応的な閾値処理を行う Image::adaptiveThreshold()
- Imaging にエッジ検出のための関数 Sobel(), Laplacian(), Canny() を追加
- Image にブラー処理のメンバ関数 blur(), medianBlur() を追加
- Image::fit() に、拡大を行わないオプションを指定する引数を追加
- Image への書き込みを、ブレンドを行う write と、上書きの overwrite に区別するように
- Point, Line, Rect, Circle, Ellipse, Triangle, Quad, LineString, Polygon を Image にブレンドして書き込む機能を追加 (Thanks @favdragon_rean)
- Rect, Circle, Triangle, Quad, Polygon に writeFrame() / overwriteFrame() メンバ関数を追加
- Rect, Triangle, Quad に asPolygon() メンバ関数を追加
- LineString を太らせた Polygon を作成する LineString::asPolygon() 関数を追加
- 矢印型のポリゴンを作る Arrow() 関数 (Thanks @hamukun8686)
- 画像の膨張と縮小をする Imaging::Dilate() / Imaging::Erode() 関数を追加
- 画像から複数の Polygon を作る Imaging::FindExternalContours() / Imaging::FindContours() 関数を追加
- R32F / RGBA16F / RGBA32F 型を追加
- ImageR32F / ImageRGBA16F / ImageRGBA32F 型を追加
- ImageR32F / ImageRGBA16F / ImageRGBA32F 形式で DDS 画像の読み書きに対応
- AudioProperty にアルバム名、アーティスト名、トラック番号、年などを追加 (Thanks @Rinifisu)
- 各種オーディオファイルのメモリからの読み込みに対応
- MP3 保存の際にビットレートの指定が可能に (Windows 8 以降)
- 半精度浮動小数点数を表す HalfFloat 型
- FFT の結果を扱う FFTResult 型
- Vec2 / Vec3 / Vec4 型に、normalized() と異なり自身を結果で上書きする normalize() メンバ関数を追加
- 各種 2D 図形型に movedBy() const メンバ関数を追加
- ファイルのダウンロード状況を示す FileDownloaderState 型
- Rect(Window::Size()) を返す Window::ClientRect() 関数
- WindowState にスクリーンの向きや解像度が変わったことを示す displayChanged を追加
- オープン/セーブファイルダイアログで初期ディレクトリの指定が可能に
- Float::Infinity, Double::Infinity 定数を追加
- 平方を計算する Math::Square() 関数を追加
- サンプリングレート 48kHz, 96kHz での録音が可能に
- ドライバがサポートしている場合、4 台以上のジョイパッドを接続可能に
- 接続されているジョイパッドの一覧を取得する Input::EnumerateJoypads() 関数
- AR マーカーの有効なサイズを設定する機能
- AR マーカー認識時のカメラカリブレーションを設定する機能
- ARMarker 型に、スクリーン上での回転を表す rotation2D プロパティを追加
- Sound の maxSpeed をコンストラクタで指定可能に (上限が 2.0 から 1024.0 に向上)
- Sound::multiPlay() で個別にスピードを設定可能に
- 扱えるレンダーステートを拡張
- Math::TwoPiF, HalfPiF 定数などを追加
- ユーザが用意した一連の Image からミップマップテクスチャを作成可能に
- RoundRect 型を追加
- RoundRect::drawFrame() で innerThickness と outerThickness を指定可能に
- Texture::size プロパティを追加
- R32G32B32_Float, R16G16B16A16_Float, R32_Float フォーマットの Texture と DynamicTexture を作成可能に
- マウスカーソル座標のスケールとオフセットを指定する Mouse::SetTransform() 関数を追加 (Thanks @agehama_)
- Vec2::rotate(double), Vec2::rotated(double), Vec2::projection(Vec2) を追加 (Thanks @agehama_, @ashiato45)
- Font::ascent プロパティを追加、ベースラインの位置を指定したフォント描画が可能に (Thanks @Pctg_x8)
- Window::SetTitle(const Args&...args) オーバーロードを追加
- Dialog::OpenFont() 関数を追加
- Rect::stretched(int, int, int, int) オーバーロードを追加
- ある幅に何文字描画できるかを返す Font::drawableCharacters() メンバ関数を追加
- GUI の Widget に Margin や Padding を指定可能に
- キーボードの種類に KeyNextTrack, KeyPreviousTrack, KeyStopMedia, KeyPlayPauseMedia を追加
- アセット管理のカスタマイズ
- サウンドデバイスが無くても起動に失敗しないようにする Config オプションを追加。デフォルトでは false
- HSV::toColor() より高速な HueToColor() 関数を追加
- RenderState 型を追加
- レンダーステートを一括で取得・設定する Graphics2D::GetRenderState() / SetRenderState() 関数を追加
- Polygon::scale() / scaled() メンバ関数を追加 (Thanks @hamukun8686)
- ColorF::gammma() メンバ関数を追加
- ARMarker の座標を左右反転するフラグを追加
- コマンドライン引数のリストを取得する CommandLine::Get() 関数を追加 (Thanks furafura)
- 法線を自動計算する MeshData::computeNormals()
- Triangle3D 型を追加
- 3D プリミティブの交差判定機能を拡充
- Forward Renderer において index 0 の光源が per vertex で適用されるようになった
- Kinect v1 のユーザーインデックス対応
- AlphaF() 関数を追加
- IntegerBase::Max() / Min(), FloatBase::Max() / Min() / Infinity() 関数を追加
パフォーマンス改善
- MP3 ファイルの読み込み時間を半分以下に高速化
- Polygon の描画を大幅に高速化
- RoundRect の描画を大幅に高速化
- パーティクル描画を高速化
- StringView のパフォーマンスを改善
- Char::isXXX のパフォーマンスを改善
- 一部の型の Format の速度を改善
- Polygon のメモリ消費を 50 - 60 % 以上削減
- あたり判定を全体的に高速化
- JPEG 画像の読み込みの速度を改善
- DDS BC1 - BC3 形式の画像の読み書きの速度を改善
- Image の処理を全般に高速化
- 図形を大量に描画するときのオーバーヘッドを削減
- スクリーンキャプチャの取得を高速化
バグフィックス
- May 2014 で OBJ が読み込めなくなったバグを修正 (Thanks @syougun360)
- 小さい Circle の描画品質を改善
- Texture や Sound などのアセットを static で作成するとアプリ終了時にエラーが発生した問題を解消
- Texture(rgb, alpha) のオーバーロードの問題を修正
- Mouse::Ray() が正しくない値になることがあったバグを修正
- Timer::set() 後に Timer::elapsed() が 0 を返すことがあったバグを修正 (Thanks @Rinifisu)
- FileSystem::Rename() のバグを修正
- CSVReader::reload() が効かなかったバグを修正
- CSVReader の諸々のバグを修正
- 空白を含む文字列を String として Parse したときに、空白で文字列が途切れるバグを修正
- INIReader の諸々のバグを修正
- Circular の Format がコンパイルエラーになるバグを修正
- Imaging::GetSize() で Exif を含む JPEG のサイズが正しく取得できなかったバグを修正
- Image::mosaic() で horizontal または vertical が 1 のとき画像加工されなかったバグを修正
- 画像ファイルのフォーマット判定が甘く、無関係のファイルを ImageFormat::JPEG と認識していた問題を修正 (Thanks @hisoji)
- aligned_vector で要素のデストラクタが呼ばれなかったバグを修正 (Thanks @agehama_)
- WindowState::screenSize がアプリ実行中に変更されないバグを修正 (Thanks furafura)
- Parse<bool> で、文字列の前後に空白文字があるときに正しく変換できなかったバグを修正
- Graphics::Set2DTransform で大きいスケールを指定したときに Circle の描画品質が低下していた問題を修正 (Thanks @agehama_)
- フルスクリーンモードの安定性を改善
- Line::draw() のずれを修正
- インストール時にエラーが発生することがあったバグを修正
- Print() を使い続けると動作が重くなったバグを修正
- COM10 以上のシリアルポートが開けなかったバグを修正 (Thanks @Nocorupe_ast)
- TimerSec, TimerMinute で pause() 後に値が不正になっていたバグを修正 (Thanks @39mogura)
- 初期値を指定しないラジオボタンで assert が発生していたバグを修正 (Thanks @hisoji)
- Skeleton のスペルが Skelton になっていた間違いを修正 (Thanks @nico_shindannin)
- 環境によっては Debug ビルドのアプリが実行できないことがあった問題を修正 (Thanks @hisoji)
- KinectV1 で 2 人以上トラッキングできなかったバグを修正
仕様変更
- Windows Vista SP2 での動作サポートを終了。実行には Windows 7 以降が必須に
- boost::optional を s3d::Optional に置き換え。Boost 非依存に (Thanks @shitijyou)
- optional::get() → Optional::value(), optional::get_value_or() → Optional::value_or()
- 図形型の rotate() メンバ関数を rotated() に名称変更
- Joypad を Gamepad に名称変更
- GamePad や XInput の軸の値は -1.0 ~ 1.0 の範囲に正規化して表現するよう仕様変更
- XInput のトリガーは 0.0 ~ 1.0 の範囲に正規化して表現するよう仕様変更
- LoopProperty を廃止、SoundLoop に移行
- RoundRect() 関数を廃止、RoundRect 型に移行
- BlendState::Additive など定義済みレンダリングステートの取得は関数ではなくオブジェクトに仕様変更
- Graphics::XXX() は Graphics2D::XXX() と Graphics3D::XXX() に分かれた
- RendererProperty と Renderer を廃止、個別の RenderState に移行
- リニアライティングを導入
- Billboard を Particle に移行、描画は Graphics3D::DrawParticlesForward() に移行
- 3D 描画系関数をデフォルトの Deferred と Forward の二系統に分離
- Fog の仕様を変更
- デフォルトで光源が有効になっているよう仕様変更
- Polygon の文字列表現を ( (0,0),(5,0),(5,5),(0,5) ) から (((0,0),(5,0),(5,5),(0,5))) に仕様変更
- Calendar, Date 型をそれぞれ Date, DateTime 型に名称変更
- StringRef を StringView に名称変更
- ディレクトリのコピーは中身をコピーするよう仕様変更 (Thanks @Rinifisu)
- FileSystem::RemoveAll() を FileSystem::Remove() に統合
- s3d::vector を s3d::Array に名称変更 (Thanks @nico_shindannin)
- Shuffle() の引数を変更
- CSVReader / INIReader 等の get / getOptional を get / getOr / getOpt に整理
- Palette を enum class から Color 型の定数に変更
- 一部の図形のあたり判定を修正
- MillisecProfiler / MicrosecProfiler / ClockProfiler を MillisecClock / MicrosecClock / RDTSCClock に名称変更
- Geometry 名前空間を Geometry2D に変更
- CreatePentagon() / CreateHexagon() を廃止、CreateNgon() に統合
- CreateNgon() / CreateNStar() 等の戻り値の型を vector から Polygon に仕様変更
- Image::getRect() を Image::clip() に名称変更
- DDS の BC1, BC2, BC3 保存時に ABGR → ARGB のチャンネル変換が不要に
- Image::threshold はアルファ値を変更しないように仕様変更
- Imaging::Xxxx の画像処理は結果の出力先を参照で渡すよう仕様変更
- Image の諸メンバ関数にオーバーロードを追加
- Image::blend() は Image::write() に名称変更
- 画像の一部を別の画像に書き込む際は Image(x, y, w, h).write(...) と記述するよう仕様変更
- Geometry::Triangulate() を廃止、Polygon に統合
- AudioProperty::durationSec を AudioProperty::durationMillisec に仕様変更
- AudioProperty::encodingBitrateBPS を AudioProperty::encodingBitrate に名称変更
- OggVorbis エンコードのデフォルトの品質を 80 から 60 に変更
- MP3 エンコードのデフォルトの品質を 320kbps から 192kbps に変更
- AAC エンコードのデフォルトの品質を 192kbps から 160kbps に変更
- AACQuality の列挙子の名称を変更
- Audio:: XXX EncoderEnable() 関数などを Audio:: XXX EncoderAvailable() に名称変更
- Waving::ChangeTempo() / ChangePitchSemitones() / ChangeSamplingRate() などは結果を参照で受け取るよう仕様変更
- FFT 関連の API を Waving から FFT 名前空間に移動、仕様を一部変更
- Polygon の simplify() メンバ関数を simplified() に名称変更
- Geometry2D::ImageToPolygon() を Imaging::FindExternalContour() に名称変更
- ファイルダウンロード関数を扱いやすく仕様変更
- MessageBox::Show() の、タイトルを省略するオーバーロードを追加
- Dialog::OpenSoundAsWave() を Dialog::OpenWave() に名称変更
- ExtensionFilter::BasicSound を廃止
- ColorF に対する * や + の演算は左辺のアルファ値を保持するよう仕様変更
- ColorF::col プロパティを ColorF::toColor() に名称変更
- RecorerSamplingRate を RecorerFormat に名称変更
- GamePadButton を GamepadButton に名称変更
- Xinput::thumbLX, thumbLY ... を leftThumbX, leftThumbY ... に名称変更
- ARMarker 名前空間を AR に名称変更
- ARMarkerInfo を ARMarker に名称変更
- Null Sound の音量を小さくした (Thanks @Rinifisu)
- Sound への FFT はサウンドが停止中でも結果を返すよう仕様変更
- Typeface 型を廃止、文字列定数に仕様変更
- Window::SetCursorPos() を廃止、Cursor::SetPos() に移行
- Window::ShowCursor(), Window::SetCursorTexture() を廃止、Cursor::SetStyle() に移行
- Texture のミップマップ指定を bool 型から TextureDesc 型に仕様変更
- アセット管理の XXByTag() 関数の引数の型を std::vector から String に仕様変更
- Image::dataSize, Wave::dataSize プロパティを Image::memorySize, Wave::memorySize に名称変更
- Web カメラ使用時にユーザにアクセス許可を確認するよう仕様変更
- Graphics::Reset2DState() 関数を廃止、Graphics2D::SetRenderState(RenderState2D::Default) に移行
- Graphics::GetScreenPos() / GetWorldPos() / GetRayFromScreenPos() を Graphics3D::ToScreenPos() / ToWorldPos() / ToRay() に名称変更
- 広いシーンにおける深度テストのクオリティを改善
- Camera::farclip を廃止
- MeshObject を MeshData に名称変更
- Light::Off() を Light::None() に名称変更
- SeedDefaultRNG() を Reseed() に名称変更
- Kinect 名前空間を KinectV1 に名称変更
- KinectV1 の関数名を KinectV2 に合わせ変更
- 数々の内部実装の改善
その他
- 主要機能のドキュメント追加
- Visual Studio 2013 update 3 以降が必要に
- libpng のバージョンを 1.6.9 から 1.6.12 に更新
- 内部で使用する Boost のバージョンを 1.55.0 から 1.57.0 に更新
- OpenCV のバージョンを 2.4.8 から 2.4.9 に更新
- libmpg123 のバージョンを 1.16.0 から 1.20.1 に更新
- 付属の M+ フォントを更新。対応漢字が 4,800 から 4,900 に
仕様変更
- Visual Studio 2013 Update 3 に対応
新機能
- Wave のテンポを変更する Waving::ChangeTempo()
- Wave のピッチを変更する Waving::ChangePitchSemitones()
- Wave のサンプリングレートを変更する Waving::ChangeSamplingRate()
- AR マーカー
- 角が丸い長方形 RoundRect (Thanks @hamukun8686)
- メッセージボックス
- マルチタッチ対応 (Thanks @viscuit)
- Mesh の中身を更新できる DynamicMesh 型 (Thanks @viscuit)
- クライアント領域の中心座標を返す Window::Center()
- AllOf, AnyOf, NoneOf
- 配列, std::array, std::vector, s3d::vector に対する Format
- Vector, Matrix, Quaternion の Format, Parse 対応
- Polygon の rotate
- Quaternion::RotationArc()
- ParseOr, ParseOpt
パフォーマンス改善
- Image への図形描画の高速化 (Line::write(), Circle::writePie(), Ellipse::write(), Triangle::write(), Quad::write(), Polygon::write(), LineString::write(), Linestring::writeCatmullRomSpline() など数倍~数十倍改善)
- Image::scale(), Image::gaussian() を少し高速化
バグフィックス
- タブレット PC でタッチがクリックと判定されにくかった問題を修正
- Twitter::OpenTweetWindow() で改行を扱えないバグを修正 (Thanks @Rinifisu)
- ClipboardItemType::FilePath の誤植を修正
- Image::fit() が正しくなかったバグを修正 (Thanks @hamukun8686)
- 空の Polygon を simplify() するとクラッシュしたバグを修正
- 空のポリゴンに関連したバグを修正
- 法線の無い OBJ を読み込むとクラッシュしたバグを修正
- Println() / Print() で連続した改行が出力できなかったバグを修正
- Parse<bool> が正しくなかったバグを修正
- Line のあたり判定のバグを修正 (Thanks @Rinifisu)
仕様変更
- Wave/Sound の rate を samplingRate に名称変更
- Wave::setRate を Wave::setSamplingRate に名称変更
- 引数が 2 つの Parse を廃止、ParseOr に移行
その他
- OpenCV のバージョンを 2.4.6 から 2.4.8 に更新
新機能
- Leap Motion 用のアドオン
- XML の読み込み
- Image を書き込んで 圧縮/非圧縮 AVI ファイルを作成する VideoWriter
- シリアル 通信
- Vec3, Sphere, Box どうしの交差判定
- Ray 型
- Ray と Box, Sphere の交差判定
- OBJ モデルファイルの読み込み
- Twitter つぶやきページを開く機能
- 引数が 1 つの乱数生成関数
- ベクトル型の乱数生成関数
- 指定したパスまでの親ディレクトリを作成する FileSystem::CreateParentDirectories()
- font(a, b, c).draw() と書ける機能
- Quaternion に *, *= 演算子オーバーロードを追加 (Thanks @hamukun8686)
- 軸と回転角を指定して Quaternion を作成するコンストラクタを追加 (Thanks @hamukun8686)
- String 中のある文字列を別の文字列に置換する String::replace() のオーバーロードを追加
- Dialog::GetFolder() で初期ディレクトリを指定する機能 (Thanks @Rinifisu)
- 指定した URL をユーザ既定のブラウザで開く Internet::LaunchWebBrowser() (Thanks @Rinifisu)
- String を UTF-8 文字列に変換する CharacterSet::ToUTF8()
- UTF-8 文字列からワイド文字列に変換する CharacterSet::FromUTF8()
- 最新の DirectX ランタイムがインストールされていなかった場合、ダウンロードサイトを起動するように (Thanks @Rinifisu)
- HSV::toColor(), /toColorF() にアルファ値のパラメータを追加
- 定義済み乗算/減算ブレンドの関数を追加
- Line に始点から終点へのベクトルを返す vector() メンバ関数を追加 (Thanks @agehama_)
- Image::getRect(int,int,int,int) オーバーロードを追加
- 画像の不透過部分から Polygon をつくる機能
- Print / Println した内容をクリアする ClearPrint() (Thanks @hamukun8686)
- Texture を指定しない Sprite 描画を追加
- Quaternion に isIdentity プロパティを追加
- Vec3, Box, Sphere に intersects メンバ関数を追加
- マウスカーソルの Ray を求める Mouse::Ray() 関数を追加
- 画面の座標を Ray に変換する Graphics::GetRayFromScreenPos() 関数を追加
- Box, Sphere に stretced() メンバ関数を追加
- Quaternion や Mat4x4 などを含む 16 バイトアライメントの型を扱える s3d::vector エイリアステンプレートを追加。今後は vector には std:: をつけないことを推奨。
- FFT サンプル数を 8192 固定から (256, 512, ..., 16384) まで指定可能に
パフォーマンス改善
- Font::write(), Image の blend, Color の blend を 2 - 5 倍高速化
- WebP のエンコード/デコードをマルチスレッド化して高速化
- Billboard を若干高速化
- 大量に Print / Println した際ののパフォーマンスを改善 (Thanks @hamukun8686)
バグフィックス
- ファイルダイアログで拡張子、タイトルが正しく設定されなかったバグを修正 (Thanks @hisoji)
- bKGDチャンク(背景色)を持つ PNG 画像が正しく透過しなかったバグを修正 (Thanks @horuhure_)
- Atan() が正しくなかったバグを修正 (Thanks @hamukun8686)
- 角度によって LineString の線がはみ出ていたバグを修正
- TimerMillisec::set() が正しくなかったバグを修正 (Thanks @Rinifisu)
- 改行が連続するテキストの Font の region が正しくなかったバグを修正 (Thanks @Rinifisu)
- Quaternion を回転するメンバ関数で Roll, Pitch, Yaw が正しくなかったバグを修正
- TextWriter::clear() 後に書き込みができなかったバグを修正 (Thanks @Rinifisu)
仕様変更
- 図形の内部判定で B::within(A) を廃止、A::contains(B) に移行
- Vec2, Vec3, Vec4 型にも Format の DecimalPlace が適用されるように
- ファイルダイアログ系の関数名とパラメータを改善
- Box2D はアドオンに移動、Box2D を使う場合は # include <Siv3DAddon/Box2D.hpp>
- RadioButton の 第三引数を optional から optional に変更
- BlendColor() に Color と unsigned を引数にとるオーバーロードを追加
- 引数が1つの Smoothstep オーバーロードを追加
- 3D プリミティブを表現する型を整備
- Primitive 名前空間を Geometry3D に名称変更
- Quaternion の rotateXX メンバ関数内で要素を正規化するよう仕様変更
その他
- libpng のバージョンを 1.6.6 から 1.6.9 に更新
- libwebp のバージョンを 0.3.1 から 0.4.0 に更新
- 付属の M+ フォントを更新。対応漢字が 4,700 から 4,800 に
新機能
- TextWriter で OpenMode::Append を指定した際、既存のファイルのエンコーディング設定をそのまま使う機能を追加
- Point, Vec2 に Zero, One, UnitX, UnitY, Left, Right, Up, Down プロパティを追加
- Vec3 に Zero, One, UnitX, UnitY, UnitZ, Left, Right, Up, Down, Forward, Backward プロパティを追加
- Vec4 に Zero, One, UnitX, UnitY, UnitZ, UnitW プロパティを追加
- Key に == != 演算子を定義
- 楕円を表現する Ellipse 型を追加
- 楕円の描画機能を追加
- Ellipse vs Point, Ellipse vs Vec2 のあたり判定を追加
- 多角形や星形の作成を補助する関数を追加
- String から各種データ型に変換する Parse<Type>() 関数を追加
- Line と Polygon のあたり判定を追加
- Graphics::Get2D~() を追加(Thanks @__roxion1377)
- Triangle::rotate() / rotateAt() を追加
- GUI にラジオボタンを追加
- Internet Explorer を起動して指定した URL を開く機能を追加
- 頂点座標、UV 座標、頂点色、頂点インデックスを自由に設定できる描画オブジェクト Sprite を追加
- Quaternion 型
- 3D プリミティブ描画
- ディザリングの有無を指定して GIF を保存する Image::saveGIF() を追加
バグフィックス
- TextWriter で OpenMode::Append が効いていなかったバグを修正 (Thanks @DragonIcecle )
- Imaging::GetFormat() がつねに ImageFormat::Unknown を返していたバグを修正
- Image のロードで存在しないパスを指定すると assert が発生していたバグを修正
- Circle::within(Circle) が正しくなかったバグを修正
- Clipboard::GetImage() の画像の R と B チャンネルが入れ替わっていたバグを修正
- 3D 描画で結果にノイズが入ることがあったバグを修正
- Image::floodFill() / Imaging::FloodFill() で lowerDifference と upperDiferrence が効いていなかったバグを修正
- Texture::rotateAt(), Rect::rotateAt() が正しくなかったバグを修正 (Thanks @runom)
- December 2013 で SivNoise.hpp がインクルードされていなかったバグを修正
- GUI を非アクティブにすると GUI のレイアウトが崩れたバグを修正 (Thanks @hamukun8686 )
- Input::GetActiveKeys() が空の Key も返していたバグを修正
- Math::Clamp と s3d::Clamp が衝突していたバグを修正 (Thanks @agehama_)
- Random で min == max のとき assert が発生したバグを修正(Thanks @__roxion1377)
- Date::format() で SSS が 3 桁ではなく 2 桁に Pad されていたバグを修正
- Polygon に空の vector を渡すとクラッシュしたバグを修正
- GUI でスライダーの margin が正しくなかったバグを修正
仕様変更
- Font::drawKinetic() にデフォルト引数を追加
- INIReader::get のテンプレート特殊化を廃止
- Light::Point() / Directional() の引数の順序を変更
- スクリーンショットの保存名を変更
- PrimitiveBase::scale(double) オーバーロードを追加
- BillboardMesh を Billboard に名称変更
- Round と Log2 は cmath の関数を使うように
- GUI のスライダーの valueInt は四捨五入した値を返すよう仕様変更
- カメラの初期位置を変更
- スクリーンショット保存機能をデフォルトで有効に
新機能
- Visual Studio 2013 にのみ対応
- 日付を表す Calendar 型を追加
- 時間の単位を表す Days, Hours, Minutes, Seconds, Milliseconds 型を追加
- 日付の演算 例) Date d = Date::Now() + Days(1) + Hours(12), Days d = DurationCast(Date(2013, 9, 10) - Date(2013, 8, 22));
- Date が << 出力演算子をサポート
- コンピュータが起動してからの時間をマイクロ秒で返す Time::GetMicrosec() 関数
- 画面に簡易にテキストを出力する Print(), Println() 関数
- EventTimer クラス
- BinaryWriter / TextWriter ::write() が Initializer list に対応。.write({12,34,56}) といったことが可能に
- TextWriter ::write(wchar_t) / writeln(wchar_t) オーバーロード
- TextWriter ::write(Args...) / writeln(Args...) オーバーロード
- TextReader::readChar(wchar_t&) / readeLine(String&) / readeContents(String&) オーバーロード
- TextReader で エンコーディングを指定してファイルを開けば、BOM 無しの UTF8 / UTF16LE / UTF16BE も扱えるようにした
- Blob や文字列、ファイルから MD5 ハッシュを作成する MessageDigest 機能を追加
- 正規表現で文字列を置換する Regex::ReplaceFirst() / ReplaceAll()
- 初めて呼ばれたときだけログ出力をする LOG_ONCE(...) マクロ
- TextReader オープン時に、エンコーディングの種類をログ出力するように
- FileSystem 系関数のログ出力を追加
- 範囲をランダムにシャッフルする Shuffle() 関数を追加
- CSVReader / INIReader の get() /getOptional() で大文字小文字に関係なく bool 値を読み込めるように
- optional の Format に対応
- Point と double の計算のオーバーロードを追加
- Vec2 から Point に変換する Vec2::asPoint()
- Line に lengthSq() メソッドを追加
- 正三角形の Triangle を作るための Triangle コンストラクタオーバーロードを追加
- 三角形の重心を返す Triangle::centroid プロパティ
- Triangle に setCentroid() メソッドを追加
- 2π を表す Math::TwoPi, (1/3)π を表す Math::OneThirdPi, (1/4)π を表す Math::QuarterPi
- Polygon に外接長方形を表す boundingRect プロパティを追加
- Polygon に凸法の Polygon を返す computeConvexHull() メソッドを追加
- Polygon に begin() / end() メソッドを追加
- LineString に Initializer list を使うコンストラクタを追加
- LineString に部分配列を返す substr() メソッドを追加
- LineString に begin() / end() メソッドを追加
- LineStrgin が << / >> 演算子に対応
- 文字列から LineString を初期化するコンストラクタオーバーロードを追加
- Rect::within(Triangle), Rect::within(Quad) を追加
- Line::within(Rect), Line::within(Circle), Line::within(Triangle), Line::within(Quad) を追加
- Rect, Circle, Triangle, Quad, Polygon に周囲の長さを返す perimeter() メソッドを追加
- Math::Radinas(int) オーバーロードを追加
- 画像の同じ、もしくは近い色の領域の塗りつぶしをする Image::floodFill() 関数を追加
- 32bit-float 形式の WAVE ファイルの読み込みに対応(波形は 16bit に変換される)
- MP3 出力に対応 (Windows 8 以降)
- WMA 出力に対応
- バイナリから WMA ファイルを識別できるように
- AAC, WMA ファイルの AudioProperty を取得可能に
- Polygon に operator+, moveBy メソッドを追加
- WindowEvent に、何らかのキーが押されるイベントを表す WindowEvent::AnyKey を追加
- 実行時にアプリのアイコンを変更する機能を追加
- Audio::GetProperty() にオーディオファイルからタイトル名のメタデータを取得する機能を追加
- 何らかのキー入力があるまで待機する WaitKy() 関数を追加。System::Update() とは併用できない
- フォント選択ダイアログに対応
- 経過時間をプロファイリングするための MillisecProfiler, MicrosecProfiler, ClockProfiler を追加
- Catmull-Rom スプラインを計算する Spline::CatmullRom() 関数を追加
- LineString に Catmull-Rom スプラインを Image に書き込む writeCatmullRomSpline() メソッドを追加
- 何らかのキーが入力されているかを返す Input::AnyKeyClicked(), AnyKeyPressed(), AnyKeyReleased() を追加
- アクティブな Key 一覧を返す Input::GetActiveKeys() を追加
- FFT 機能を追加。再生・録音しているサウンドの周波数スペクトルを取得できる
- 画像の拡大縮小時に最適な補間方法を自動で選択する Interpolation::Unspecified を追加
- Point にも letClicked / rightClicked 等マウス判定プロパティを追加
- 指定した ID の AR マーカーを作る ARMarker::CreateMarker() を追加
- Sound::setVolume() で左右のチャンネルごとに音量を設定する機能を追加
- サウンドのボリュームを減衰レベル(dB) で設定する Sound::setAttenuation_dB() を追加
- Sound::playMulti() に音量を設定するパラメータを追加
- 実行中にアセットファイルが変更されたときに自動でデータを更新する機能を追加
- Sound 作成時にループ範囲を指定する機能を追加
- ログに GPU のメモリの量を出力するように
- 実行中のウィンドウモード←→フルスクリーンの切り替えに対応
- Color / ColorF に Palette と アルファ値をとるオーバーロードを追加 (Thanks @hisoji)
- 2D 描画のスケールとオフセットを指定する機能を追加
- Line / Rect / Triangle / Quad::draw() に、各頂点に色を指定するオーバーロードを追加
- 太さを持つ LineString を描画した際、接続部分が整形されるように
- LineString に drawCatmullRomSpline() メソッドを追加
- Line::draw() に isClosedCurve パラメータを追加
- Quad::drawFrame() を追加
- Polygon::drawFrmae() を追加
- アーチ型を描くための Circle::drawArc() を追加
- 現在のフレームのスクリーンショットを保存する Graphics::SaveScreenshot() を追加
- Texture に mipped プロパティを追加
- 前のフレームのマウス位置を返す Mouse::PreviousPos() / PreviousScreenPos() を追加
- フォントスタイルを指定する FontStyle 型を追加
- Font から特定の文字の TextureRegion を取得する Font::getTexture() を追加
- Font::regionCenter() を追加 (Thanks @DragonIcecle)
- config.ini に PrintScreen キーでスクリーンショットを保存させる設定 Window.bSaveScreenshot を追加
- すべての種類のアセットを Release / Unregister する Asset::ReleaseAll() / Asset::UnregisterAll() を追加
- Skin に textShadowColor プロパティを追加
- GUI の Font を変更可能に
- 3D 描画のレンダーステートを管理する Renderer クラスを追加
- ビルボードを描画するための BillboardMesh クラスを追加
パフォーマンス改善
- String のメンバ関数のパフォーマンス改善
- Format のパフォーマンス改善
- TextWriter で文字列リテラルデータを書きこむときのパフォーマンスを改善
- Polygon との intersects を、bounding box を使って高速化、場合によっては数倍の高速化
- JPEG 画像のサイズ取得を高速化
- PNG 画像のサイズ取得を高速化
- GIF 画像のサイズ取得を高速化
- TIFF 画像のサイズ取得を高速化
- 画像のフォーマット解析と読み込みを1つの BinaryReader で行うことで、画像の読み込みを少し高速化
- Imaging::XX 系の関数を大幅に高速化
- 2D 図形描画の CPU コストを大幅に削減
- 大量の 2D 描画をする際のパフォーマンスを向上
- Circle::drawFan() で角度が小さいときに頂点数を減らす最適化
- Point / Vec2 と Triangle / Quad / Polygon のあたり判定を数倍高速化
- シェーダを遅延読み込みするよう仕様変更し、アプリの起動を高速化
- MIDI と Recorder を必要になるまで初期化しないよう仕様変更し、アプリの起動を高速化
- フォグのパフォーマンス改善
バグフィックス
- Circle::drawFan() で描画できなかったバグを修正
- 不正な PPM を開いたときにクラッシュすることがあったバグを修正
- TGA ファイルのサイズが正しく取得できていなかったバグを修正
- PNG 等、一部形式の画像保存時にフォルダが作成されなかったバグを修正
- 特別なチャンクを含む WAVE ファイルを読み込めなかった問題を修正 (Thanks @agehama_)
- 一部の MP3 のデコード時、曲の最後にノイズが入っていたバグを修正 (Thanks @agehama_)
- Internet::XXX 関数の実行時に一時ファイルが削除されずに残っていたバグを修正
- Input::MouseM でマウスの中ボタンの状態が取得できていなかったバグを修正
- Sound::setLoop() を呼んで停止した際に、再生位置としてサウンドの末尾が返されることがあったバグを修正
- Sound::loopEandSample が、setLoop() で設定した値より 1 小さくなっていたバグを修正
- ループ再生した Sound を stop() すると再び再生できなかったバグを修正 (Thanks @saji_spoon)
- Null Sound にループ範囲を指定すると再生されなかったバグを修正
- 図形を 2D ステンシルで描画した直後に図形が描画されなかったバグを修正 (Thanks @hamukun8686)
- Circle::drawFrame() のパラメータによっては描画品質が低下したバグを修正 (Thanks @agehama_)
- Font の領域が実際より少し狭くなっていたバグを修正
- KeyPrintScreen が正しく取得できていなかったバグを修正
- 2D 描画と 3D 描画を混ぜると、2D が描画されない場合があったバグを修正
- Rect(Texture) が 1px 小さくなっていたバグを修正
仕様変更
- Format()+a+b+c+d を、C++11 の Variadic Templates を使って Format(a,b,c,d) と書くよう仕様変更
- s3d::Width() は String を返す関数に仕様変更
- s3d::DecimalPlace() はマニピュレータになった。Format()+DecimalPlace(3.14,4) は Format(DecimalPlace(4),3.14) と書くよう仕様変更
- using CharacterSet
- Max, Min が initializer_list に対応 Max({3,6,2,4}) のように書ける
- Time::UtcOffset() を Time::UtcOffsetMinutes() に名称変更
- operator void*() / operator !()を C++11 の explicit operator bool() に変更
- TextWriter::operator <<() を廃止、TextReader::write(Args...) に置き換え
- String::replaceRegex() を廃止、正規表現関連の機能は Regex::~ に移動
- LoggerOutput を LogLevel に名称変更
- LOG_MSG, LOGFMT_MSG, LOG_DBG 等のログ出力マクロを LOG(...) / LOG_DEBUG(...) / LOG_ERROR(...) に統合
- RNG クラスの仕様変更、ヘッダの分布クラスと連携可能に
- RandomSelect() 関数を initializer-lists に対応させ引数の個数が無制限に
- INIReader と CSVReader のメソッド名などを統一
- Math::PI /HALF_PI / PIf を Math::Pi / HalfPi / PiF に名称変更
- 文字列のパディングを行う s3d::Width() 関数を廃止、s3d::Pad() 関数に
- Polygon のいくつかのコンストラクタを Initializer list を使うものに統合
- Imaging::ForEach() のパラメーターを変更
- Imaging::DrawLine() を廃止、LineIntString / LineString::write() に移行
- Wave::free() を Wave::clear() に名称変更
- WaveSample::SwapChannel() をWaveSample::swapChannel() に名称変更
- AudioInfo を廃止, AudioProperty に移行
- Waving::GetInfo() を廃止, Audio::GetProperty() に移行
- WindowType を WindowStyle に名称変更
- WindowState::titlebarHeight を WindowState::titleBarHeight に名称変更
- System::GetFrameCount() を System::FrameCount() に名称変更
- WindowEvent::Focus を WindowEvent::Unfocus に名称修正
- Imaging::LoadAnimatedGIF() の戻り値を、std::vector に仕様変更
- Waving 名前空間の一部の関数を Audio 名前空間に移動
- Clipboard::GetFileFilePathes() を Clipboard::GetFilePaths() に名称修正
- ClockCounter を廃止, ClockProfiler を使うように
- Profiler::Counter(), Profiler::CounterFrequency(), Profiler::RDTSC() を廃止
- Profiler::GetInfo() を廃止, FPS 取得は Profiler::FPS() を使うように
- RecordSampling を RecorderSamplingRate に名称変更
- Recorder::Start() は引数をとらないように仕様変更、バッファサイズの指定は Recorder::SetBufferBySample() / SetBufferBySec() を使う
- Button を GamePadButton に名称変更
- Joystick を Joypad に名称変更
- Sound::setLoop() を呼ぶと必ずサウンドの再生を停止し、再生位置を先頭に戻すよう仕様変更
- Sound::dB プロパティを廃止
- Sound::playMulti() で、同時再生上限 (20) を超えていたとき、再生しないのではなく、再生キューの先頭のサウンドを停止して新しいサウンドを再生するよう仕様変更
- Sound::setVolumeMulti() を廃止
- Resource 名前空間の機能を SoundAsset / TextureAsset / FontAsset 名前空間に移動
- Asset のタグを initializer-list で指定するよう仕様変更
- レンダリングステート設定の仕様を変更
- Vec2 / Vec3 / Vec4 の normalize() を normalized() に名称変更
- LineIntString を廃止
- Line::draw() の始点と終点は幅に依存しないよう仕様変更
- Quad::draw() のオーバーロードを一部廃止
- Triangle::drawLine() を廃止、Triangle::drawFrame() に置き換え
- Circle::draw() の r が 32px - 200px のときの品質を改善
- Circle::writeFan() / drawFan() を writePie() / drawPie() に名称変更
- Texture の一部のコンストラクタのオーバーロードを廃止
- Texture::Mipped を廃止、ミップマップの作成は bool 値で指定するように
- Mouse::PrePos() を Mouse::HalfPreviousPos() に名称変更
- ImageResolution / DepthResolution を KinectColor / KinectDepth に名称変更
- Kinect::Start() のパラメータを変更、引数の省略が可能に
- Distribution を UniformDistribution に名称変更
- engine/fonts/M+ フォルダを mplus フォルダに名称変更
- Font::write / draw 系メソッドの引数を変更
- Font::lineHeight プロパティを廃止
- フォントの基本の行間を表す Font::height プロパティを追加
- Font::setLineHeight() を廃止、FontStyle の lineHeight でパーセント指定するよう仕様変更
- Font::write() / draw() で wchar_t を引数にとるオーバーロードの廃止、代わりに { ch } を使う
- KineticTypography の length と index プロパティを int 型から unsigned 型に変更
- config.ini のパラメータ名変更
- Kinect:: Get ~ 系関数の名称を変更
- GUIGroup を廃止、Texture や Sound のように GUI / GUIAsset で管理するように
- GUI のメソッドの仕様変更
- Widget::Label を WidgetText に名称変更
- Widget::Image を Widget::Texture に名称変更
- Widget::HorizontalSliderを Widget::Slider に名称変更
- Skin を GUISkin に名称変更
- Circle / Rect の stretch() メソッドを stretched() に名称変更
- FXAAQuality を AntiAliasing に名称変更
- Graphics::SetFXAAQuality() を Graphics::SetAntiAliasing() に名称変更
- Graphics::SetBackGround() を Graphics::SetBackground() に名称変更
- Graphics::Render2D() を Graphics::Render2DBackground() に名称変更
- 3D 描画系関数の仕様を変更
- FBX ロード機能を一時的に削除
- GUI::SetCursor() を廃止、Window::SetCursorTexture() と Window::SetCursorRegion() を使うように
- Model を一時的に廃止
その他
- Siv3D のインストールを自動化するツールを同梱
- 依存する boost ライブラリヘッダを削減
- libjpeg-turbo のバージョンを 1.2.1 から 1.3.0 に更新
- libpng のバージョンを 1.6.0 から 1.6.6 に更新
- libwebp のバージョンを 0.1.99 から 0.3.1 に更新
- 付属の Box2D のバージョンを 2.2.1 から 2.3.0 に更新
- OpenCV のバージョンを 2.4.4 から 2.4.6 に更新
- 使用する llb ファイルを 3 つ削減
- Siv3D Package への AR マーカー画像の同梱を廃止
- 付属の M+ フォントを更新。対応漢字が 4,600 から 4,700 に
- Doxygen ドキュメントの添付を廃止、オンラインドキュメントに移行
新機能
- Vec2::draw()
- Quad(double,double,double,double,double,double,double,double) コンストラクタ
- 円の極座標を表す Circular 型
- Rect, Circle に、中心位置はそのままでサイズを拡大縮小する stretch() メソッドを追加
- HSV に operator +, - を追加
- Color + HSV, Color - HSV の演算を追加
- LineString のあたり判定を一部追加
- 一部の図形に within(完全に内部にある)あたり判定を追加
- Point に isZero プロパティを追加
- 実験的な GUI 機能 (Button, ToggleSwitch, HorizontalSlider, CheckBox, Label, Image, NewLine, Space, HorizontalLine )
- リソースの生成と破棄を毎フレームおこなっているミスを実行時に警告する機能
- マウスカーソルを変更する GUI::SetCursor() 関数
- PI/2 を表す HALF_PI 定数
- 3D 形状を表し draw() メソッドを持つ Plane, Box, Sphere, Disc, Cylinder, Cone 型を追加。
- Font::writeCenter() で、与えられた画像の中心にフォントを書きこむオーバーロードを追加
- String が unordered_map, unordered_set に対応
バグフィックス
- Point::draw() が消えていたのを修正
- Point vs Rect のあたり判定が 1 ドット狭かったのを修正
- フルスクリーン関連の問題を修正
- font::write() が正しく描かれないバグを修正
仕様変更
- draw() の引数の間違いを防ぐため、Palette から unsigned への暗黙変換を禁止
- Line::draw(Color) オーバーロードを追加
- LineString::draw() の上限サイズ(1024)を撤廃
- Window::Resize() と Window::SetFullscreen() に, Point を引数に取るオーバーロードを追加
- Rect の tr, bl, br プロパティの値を、実際の見た目に適合するよう 1 ドットせまくした
- Graphics::Reset() は LighrBufferQuality を変更しないようにした
- Circle::drawFrame() と Rect::drawFrame() にデフォルト引数を追加
- シーンのデフォルトのカメラ位置を変更
- Mesh のメソッドを変更、TexturedMesh を廃止
- Light::Directional, Fog::Off 等を通常の関数に
- BlendColor() 後のアルファ値は dst のアルファ値を保存するよう仕様変更
- Kinect の Depth から Player Index を一時的に削除
その他
- 付属 M+ フォント更新。対応漢字が 4,500 から 4,600 に
新機能
- Siv3D のインストールを簡素化する VS2012 用プロジェクトテンプレートの同梱 (Thanks @agehama_)
- Color / ColorF::set()
- 波形合成の関数 Waving::Synthesize() を追加
- Rect / RectF::setCenter()
- 矢印を描画する Line::drawArrow() / writeArrow() 関数
- 点の配列を表す LineString 型
- ステンシルバッファを使った 2D 描画時のマスク機能
- RGB 色を指定して、アルファ成分だけ画像ファイルの R 成分からロードする Image(Color,FilePath) オーバーロード
- RGB 色を指定して、アルファ成分だけ画像ファイルの R 成分からロードする Texture(Color,FilePath) オーバーロード
- Font::region(String) オーバーロードを追加
- フォント描画がタブ文字に対応
- フォント描画時の行間を返す Font::lineHeight プロパティ
- フォント描画時の行間を指定する Font::setLineHeight(int)
- 座標を指定して移動させた Polygon の描画に対応
- 文字列による Quad, Polygon の初期化
- Triangle(double,double,double,double,double,double) コンストラクタ
- Line, Rect, Circle, Triangle, Quad に、座標を平行に移動した図形を返す operator + と operator - を追加
- String の代わりに wchar_t を引数に取る Font::draw() / write() オーバーロードを追加
- Circle(double) オーバーロードの追加
- 長方形の各辺の Line を返す Rect::top / right / bottom / left プロパティ
- Texture の矩形範囲を UV 座標で指定する Texture::uv() を追加
- 引数のうちいずれかの値をランダムに選択する RandomSelect() 関数
- ライブラリのバージョンと engine フォルダのバージョンが一致するかのチェックを追加
パフォーマンス改善
- 2D 描画のパフォーマンス改善
バグフィックス
- 前回の更新でデバッグビルド時に Sound::stop() や Sound::setPosSec() で assert が発生するようになったバグを修正
- 前回の更新でサウンドのループが不正になったバグを修正
- ColorF(double) コンストラクタでアルファが 1.0 にならないバグを修正
- Skelton::screenPositions の typo を修正
- Dragdrop::GetFilePaths() の typo を修正 Engine フォルダが存在しないときクラッシュする問題を修正
- ウィンドウのリサイズをすると背景色の設定がリセットされるバグを修正
- Font::write() で、文字でない部分のアルファが 255 にリセットされるバグを修正 (Thanks @agehama_)
- 前回の更新で Color::operator~ が不正になったバグを修正
- 前回の更新で Image::negative() /Imaging::Negative() が不正になったバグを修正
- Dialog::GetFolder() がフリーズするバグを修正
仕様変更
- Image / Texture::width, height の型を int 型に
- Circle::pos を Circle::center に名称変更
- Rect(x,y),Rect(pos) コンストラクタを廃止 Rect(w,h), Rect(size) に置き換え
- Graphics::DrawLine() を廃止、LineString::draw() に機能を移動
- Line, Triangle, Quad, Polygon の iostream での表現を (x0,y0,x1,y1, ..) から ( (x0,y0),(x1,y1), ..) に仕様変更
- Line::draw() / write() の引数の順序を、Color が最後になるよう仕様変更
- Palette のうち Palette::UI_xxx を廃止
- Sound:setLoop() を Sound::setLoopBySample() と Sound::setLoopBySec() に分離
その他
- 付属の UmePlus フォントを 20130511 に更新
新機能
- Visual Studio 2012 に対応
- 文字列のアロケーションを削減する StringRef クラスを追加 (boost::wstring_ref の typedef)
- ファイルパスを示す String の typedef、FilePath 型
- ファイルとディレクトリを操作する関数を拡充
- BinaryWriter::write() が POD 型の std::vector, std::array に対応
- ファイル作成・保存時に該当ディレクトリがなくても自動で作成するように
- ログファイルの名前とタイトルは実行ファイルと同じ名前に
- デフォルトの RNG にシードを設定する s3d::SeedDefaultRNG() 関数を追加
- 確率 p でtrue, 確率 (1-p) で false を発生させる RandomBool() 関数を追加
- ColorF のコンストラクタに ColorF(double) オーバーロードを追加
- インターネットからファイルをダウンロードする機能を追加
- Color / ColorF に (rgb), (rgb,a), (L"#RGB"), (L"#RRGGBB") 形式のコンストラクタを追加
- Window::Size().x とWindow::Size().y に相当する Window::Width() / Window::Height() 関数を追加
- Kinect に対応。カラー、深度、スケルトン(1 人)、Near Mode, Seated Mode, カメラの角度、加速度測定
- Vec2 / Vec3 / Vec4 に isZero プロパティを追加
- HSV::HSV(double) コンストラクタを追加
- サウンドのループと範囲を変更する Sound::setLoop() 関数を追加
- サウンド全体の音量を変更・取得する MasterVoice::SetVolume() / GetVolume() 関数を追加
- 同一サウンドの複数同時再生機能を追加 Sound::playMulti() / pauseMulti() / resumeMulti() / stopMulti() / setVolumeMulti()
- 2D 描画時のブレンドステートを指定する Graphics::Set2DBlendState() 関数を追加
- 2D 描画時のサンプラーステートを指定する Graphics::Set2DSamplerState() 関数を追加
- 指定した座標を中心にフォントを描画する Font::drawCenter() のオーバーロードを追加 (Thanks @DragonIcecle )
- 指定した座標を中心に Texture を描画する Texture::drawAt() / TextureRegion::drawAt() / TexturedQuad::drawAt() 関数を追加
- Point::operator * (Point) を追加
- エンジンの初期化に失敗した際にメッセージボックスを表示
- 3D モデルファイルを扱う Model クラスを実験的に追加
- FBX ファイルから静的モデルをロードする機能を実験的に追加
- Font::draw() / write() でタブ文字がとりあえず 4 文字分のスペースを作るように
パフォーマンス改善
- String を引数に取る一部の関数で boost::string_ref を使い、文字列コピーのコストを削減
- Noise を高速化
- Circle::write() を大幅に高速化
- シェーダのパフォーマンス改善
- 半径が 32px 以下の Circle::draw() を Texture でおこない、パフォーマンスを大幅に改善
バグフィックス
- Logger::Write で Format() を使うとコンパイルエラーになる問題の修正 (Thanks @agehama_ / @aki_ramenaide)
- Lerp() の名前が Normalize() になっていたバグを修正
- Quad と Polygon の area() の符号が反転しているバグを修正
- Image::scale() がクラッシュするバグを修正
- Point - Vec2 の結果が正しくなかったバグを修正
- サウンドのループ再生に関するバグを修正 (Thanks @hisoji)
- Radians や Degrees など数学関数の引数に整数を渡すと正しい結果が得られないバグを修正
- 数学関数のオーバーロードに関するバグを修正
仕様変更
- Visual C++ 2010 のサポート終了
- 2D グラフィックスは draw した順に描画されるように, Graphics::NextLayer() は廃止。したがって、テクスチャを頻繁に切り替える 2D 描画のパフォーマンスは低下するので注意
- File / Directory 名前空間を FileSystem 名前空間に統合
- IntegerBase と FloatBase の binaryString / octalString / hexString プロパティを binary / octal / hex に名称変更
- BinaryReader / BinaryWriter / TextReader / TextWriter の close() メソッドでファイルを削除するオプションを廃止
- BinaryReader / BinaryWriter / TextReader / TextWriter の name プロパティを path に名称変更
- TextReader の getChar(), getLine(), getText() メソッドを readChar(), readLine(), readContents() に名称変更
- TextReader::readContents() は optional ではなく String を返すよう仕様変更
- ログ出力マクロを LOG_DBG(), LOG_MSG(), LOG_ERR() の 3 種類に
- 使用する RNG を MT19937 から MT11213B に変更してメモリ消費削減
- Noise のインターフェイスを改善
- PTree を廃止、将来のバージョンで XMLReader を実装予定
- Line を LineInt に、LineF を Line に名称変更
- Color::Color(unsigned) は RGBA を表現するのではなく、その値で RGB 色を一括で指定するよう仕様変更
- ColorF::ColorF(unsigned) を廃止
- Profile 名前空間を Profiler に名称変更
- Profile::FPS() と Profile::CPUTime() を廃止、Profiler::GetInfo() に統合
- Recorder::GetMaxBlow() / GetAverageBlow() を Recorder::GetMaxAmplitude() / GetAverageAmplitude() に名称変更
- Color / ColorF の operator= の仕様を変更
- Rounded M+ フォントの同梱を廃止。合わせて Typeface::Rounded XX を廃止
- libmpg123.dll を Debug / Release 共通にして engine フォルダのサイズを削減
- Sound のループ範囲をコンストラクタではなく playLoop() の引数で指定するよう仕様変更
- Sound::playLoop() を廃止、Sound::setLoop(true) と Sound::play() を使うよう仕様変更
- Sound::setSemitonePitch() を Sound::setSpeedBySemitone に名称変更
- Sound::isLooping プロパティを Sound::isLoop に名称変更
- s3d::Blend() 関数を s3d::BlendColor() に名称変更
- 半径が 32px 以下の Circle::draw() を Texture でおこない品質を改善
- Line::draw() の描画位置を改善 (Thanks @hamukun8686 )
- Font::region() の仕様変更、領域が拡大した。
- Mesh の Primitive 関連の機能を改善
- Vec2 / Vec3 / Vec4 ::normalize() は自身を変更せず結果を返すよう仕様変更
- ウィンドウを一定のサイズより小さいサイズにできないよう仕様変更
- ライティングとフォグを簡潔に記述できるよう仕様変更
- Input::GetCharsHelper() がタブ文字 L'\t' の入力に対応
- Script 機能と Terrain 機能は一時的に無効に。次回以降のバージョンで復活する予定
その他
- ドキュメントの追加
- boost ライブラリのバージョンを 1.52.0 から 1.53.0 に更新
- 一部の enum を C++11 の enum class に変更
- Package サイズを削減
- OpenCV のバージョンを 2.4.2 から 2.4.4 に更新
- libpng のバージョンを 1.5.10 から 1.6.0 に更新
- zlib のバージョンを 1.2.5 から 1.2.7 に更新
- libjpeg のバージョンを 8d から 9 に更新
- 付属 M+ フォント更新。対応漢字が 4,400 から 4,500 に
新機能
- TimerSec, TimerMinute を追加
- TimerMillisec::restart() を追加
- L"yyyy/M/d HH:mm:ss" のような時刻と日付のフォーマット
- HSV の h の値域制限 [0.0,360.0) を無くした
- Profile::RDTSC() を廃止、CPU クロックカウントを計測する ClockCounter クラスを追加
- ログファイル出力関数に エラーメッセージ用の Logger::Error() とデバッグメッセージ用の Logger::Debug()を追加
- Release ビルド時に削除される ログ出力マクロ LOGMSG() を追加
- Random(min,max) テンプレート関数を追加、乱数を簡単に生成できるようにした
- Vec2::xx / xy / yy, Vec3::xz プロパティを追加
- Point, Vec2, Vec3, Vec4 に distanceFrom(), distanceFromSq() メソッドを追加
- Vec2, Vec3, Vec4 に dot() メソッドを追加
- Point, Vec2, Vec3, Vec4, Rect, RectF, Circle, Line, LineF, Triangle, Quad, Polygon が Format に対応
- Format()+Vec2(0.5,1.5) は L"(0.5,1.5)" に変換される
- Point, Vec2, Vec3, Vec4, Rect, RectF, Circle, Line, LineF, Triangle, Quad, Polygon が <<, >> 演算子をサポート
- CSV や INI, XML で L"( 12, 34 )" のような文字列から読み込み可能に
- Line / LineF に線分の長さを返す length(), ある点に対する最近接点を返す closest() メソッドを追加
- Point, Vec2, Vec3, Vec4, Line, LineF, Rect, RectF, Circle に座標を平行移動する moveBy() メソッドを追加
- Polygon のコンストラクタに、Vec2 の配列を引数にとるオーバーロードを追加
- Circle, Triangle, Quad, Polygon に図形の面積を返す area() メソッドを追加
- Math 名前空間のほとんどの関数に float, Vec2, Vec3, Vec4 を引数に取るオーバーロードを追加
- Date に operator ==, !=, <, >, <=, >= を追加
- INI ファイルの読み込みに特化した INIReader を追加。実行中にファイルが更新されると INIReader::hasChanged() が true を返す
- CSVReader にファイルが更新されると true を返す hasChanged() メソッドを追加
- INIReader と CSVReader に reload() メソッドを追加
- Color, ColorF に setAlpha() メソッドを追加
- HSV から Color への暗黙的な型変換に対応
- Color, ColorF, HSV が Format に対応
- Color, ColorF, HSV が <<, >> 演算子をサポート
- 扇型を描画する Circle::writeFan() と Circle::drawFan() (Thanks @agehama_)
- スクリーン座標と depth からワールド座標を計算する Graphics::GetWorldPos() を追加 (Thanks mokuyoubi)
パフォーマンス改善
- タイマーのパフォーマンスを改善
- HSV から Color への変換を高速化
- Color から HSV への変換を高速化
バグフィックス
- Typeface::Medium / Typeface::RoundedMedium の誤表記を修正
- 2D 描画をしていないときに Graphics::NextLayer() を使うと assert になるバグを修正
- Circle 描画時、r が大きすぎるとクラッシュするバグを修正 (Thanks @agehama_)
- Vec2, Vec3, Vec4 の operator * の引数の型が int になっていたバグを修正
- 彩度が 0 の HSV が正しい Color に変換されなかったバグを修正 (Thanks @agehama_)
仕様変更
- 文字セットの変換関数を CharacterSet 名前空間に移動
- Integer::toString(int) 関数の引数に正しくない値を指定すると assert にする
- Time を Date に名称変更
- System 名前空間の時刻取得関数を Time 名前空間に移動
- Date::Utc() を Date::NowUTC() に名称変更
- LoggerOutput::Lv0 - Lv4 を廃止、LoggerOutput::Less / Normal / More に置き換え
- s3d::if_ を std::conditional に置き換え
- Rect::operator ==, != を廃止
- Rect::getArea() を Rect::area() に名称変更
- 付属の手書き風フォント Typeface::Handwriting と Typeface::HandwritingBold を廃止
- Polygon::vertexCount() メソッドを Polygon::num_points プロパティに置き換え
- Math::Dot(), Math::Cross(), Math::Distance() を廃止、Vec2::dot(), Vec2::distanceFrom(), Vec3::cross() などに置き換え
- Math::Frac() を Math::Fraction() に名称変更、HLSL と同じく [0.0,1.0) を返す仕様に変更
- ポインタを引数に取る Math 名前空間の関数を参照を受け取るように変更
- boost::assign を インクルードしないように変更
- Logger::Put() を廃止、同様の機能を持った Logger::Write() のオーバーロードに置き換え
- Imaging::DrawLine(), DrawRect() などを廃止、Line::write(), Rect::write() などに置き換え
- SoundLoop を廃止、Sound::playLoop() や Midi::PlayLoop() に置き換え
その他
- boost ライブラリのバージョンを 1.52.0 に更新
- pImpl の改善
- 付属 M+ フォント更新。対応漢字が 4,300 から 4,400 に
- 付属 UmePlus P Gothic フォントを 2013-01-08 に更新
- ドキュメント加筆
- Debug ビルド実行時 DirectX SDK 未導入の環境で Direct3D デバイスの作成に失敗する問題を修正 (Thanks もりりん)
- DirectX ランタイムがインストールされていなくて XAudio2 の初期化に失敗した際、ログに詳細を出力するように (Thanks @Sigureya)
- Sound のメソッド setPitch(), minPitch,maxPitch は誤解を招くので setSpeed(), minSpeed, maxSpeed に改称 (Thanks @favdragon_rean)
- Sound の諸メソッドを const 修飾 (Thanks @hisoji)
- 一部の Dialog::GetSave~() のデフォルトのファイルの種類が「すべての~」のためファイルに拡張子が付与されない不便を修正
- Dragdrop::SetEnabled(false) をしてもドラッグドロップを受け入れてしまうバグを修正
- シェーダの変更を少し効率化
- Color → HSV の変換が一部の色で正しくなかったバグを修正 (Thanks アゲハマ)
- Sound::posSec の型を unsigned から double に変更
- ループ範囲を指定した Sound を再生する前に Sound::setPos~() を使うとループしなくなるバグを修正
- ループ範囲を指定した Sound の作成に、終了位置を指定しない(データの終端にする)オーバーロードを追加
- 現在までに更新されたフレーム数を返す System::GetFrameCount() 関数を追加
- s3d::Math::Clamp(double..) は s3d::Clamp() とかぶるため削除
- スクリーンショットを Image 形式で取得する機能を追加
- Point - Point の演算が正しくなかったバグを修正 (Thanks アゲハマ)
- Point + Vec2, int * Point, double * Vec2, double * Vec3, double * Vec4 の演算を追加
- 頂点バッファのサイズを改善
- Graphics::Flush2D() を廃止、代わりに Graphics::NextLayer() を利用する
- なお、3D レンダリングの前に 2D をレンダリングする必要がある場合は Graphics::Render2D() を利用する
- 3D プリミティブ描画機能
- Deferred Rendering
- FXAA
- 環境光、点光源、平行光源
- Direct3D 9 世代 GPU のサポート
- 範囲ベースフォグ、高さフォグ
- 指定した区切り文字で文字列を分割する String::split(wchar_t)
- 付属 M+ フォント更新。対応漢字が 4200 から 4300 に増え、JIS 第一水準漢字もそろう
- リソースマネージャー
- CSVReader::get() の const 修飾漏れを修正
- 直前のフレームでの終了関連イベントを返す System::GetPreviousEvent() 関数を追加
- 半径が 4~6 ピクセルの Circle の描画品質を改善
- ミリ秒単位のタイマー TimerMillisec を追加
- フォントにノイズが入るバグを修正
- Typeface::Default の Ume+ Gothic フォントを更新
- Debug ビルド実行時 DirectX SDK 未導入の環境で XAudio2 の初期化に失敗する不具合を修正。(Thanks @roxion1377)
- アルファ版としてリリース