Skip to content

過去の更新履歴

Reputeless edited this page Aug 11, 2016 · 11 revisions

Siv3D June 2015 v2 (2015.6.10)

新機能

  • 画面を 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 ファイルをオープンした際にクラッシュしたバグを修正

Siv3D June 2015 (2015.5.29)

新機能

  • 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 を削除

Siv3D January 2015 v3 (2015.1.28)

バグ修正

  • パラメータによってはパーティクルが描画されなかったバグを修正
  • Sprite::drawSubset() と Mesh::drawSubset() でパラメータによっては描画ができなかったバグを修正

Siv3D January 2015 v2 (2015.1.27)

バグ修正

  • Font の縁取りでメモリリークが発生したバグを修正 (Thanks furafura)
  • Font の縁取りで外周に灰色が混じり、フォントの画質が低下していたバグを修正
  • FromString() が 2147483648 以上の数を扱えなかったバグを修正
  • DragDrop, Dialog, Clipboard で パス区切り文字が L'/' に統一されていなかった問題を修正 (Thanks furafura)
  • NO_S3D_USING と <HamFramework.hpp> を同時に使用できなかった不具合を修正 仕様変更
  • HamFramework の Sequence を Scene へ名称変更
  • ウィンドウが非アクティブな時に Cursor::SetPos() を無効にするよう仕様改善 (Thanks @hamukun8686)
  • その他細かい仕様の修正 その他
  • ドキュメントの加筆修正

Siv3D January 2015 (2015.1.25)

新機能

  • グラフィカルな演出効果を簡単に記述・コントロールできる 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 砂時 計)

Siv3D November 2014 v2 (2014.12.14)

新機能

  • 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 のメモリからの読み込み機能を無効に
  • フォントの品質を改善

その他

  • ドキュメントの修正、追加

Siv3D November 2014 (2014.11.30)

新機能

  • 新しい標準 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 に

Siv3D May 2014 v2 (2014.8.7)

仕様変更

  • Visual Studio 2013 Update 3 に対応

Siv3D May 2014 (2014.5.25)

新機能

  • 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 に更新

Siv3D March 2014 (2014.3.25)

新機能

  • 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 に

Siv3D January 2014 (2014.1.14)

新機能

  • 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 は四捨五入した値を返すよう仕様変更
  • カメラの初期位置を変更
  • スクリーンショット保存機能をデフォルトで有効に

Siv3D December 2013 (2013.11.30)

新機能

  • 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 ドキュメントの添付を廃止、オンラインドキュメントに移行

Siv3D について

  1. Siv3D の基本
  2. 図形を描く
  3. テクスチャを描く
  4. テキストを描く
  5. 文字列と数値の変換
  6. キーボード入力
  7. マウス入力
  8. サウンドの再生
  9. MIDI の再生
  10. ウィンドウと背景
  11. 図形のあたり判定
  12. 乱数
  13. ダイアログ
  14. ドラッグ & ドロップ
  15. アプリの状態
  16. テキストファイル
  17. INI, CSV, JSON
  18. バイナリファイル
  19. GUI
  20. アセット管理
  21. 画像編集
  22. Web カメラ
  23. マイク入力
  24. 経過時間の測定
  25. HSV カラー
  26. ファイルダウンロード
  27. 3D 描画
  28. 2D のレンダーステート
  29. 3D のレンダーステート
  30. パーティクル
  31. スクリーンショット
  32. アプリケーションの公開
  33. さらに学ぶには

表現テクニック集

入出力デバイス

開発のヒント

Clone this wiki locally