-
Notifications
You must be signed in to change notification settings - Fork 1
更新履歴
Ryo Suzuki edited this page Dec 29, 2021
·
73 revisions
⚠ このページは古い Siv3D (August 2016 v2) のリファレンスのアーカイブです。
最新版の Siv3D (OpenSiv3D) については OpenSiv3D Web サイト をご覧ください。
バグ修正
- 一部の環境で atls.lib が見つからないビルドエラーが生じていた問題を修正 (Thanks @RYOSKATE, @hitsumasf)
バグ修正
- Mat4x4::transform() に const 修飾がなかった不具合を修正
- ScalableWindow の BlackBar が 1 ピクセルずれることがあったバグを修正 (Thanks @voidproc)
- HamFramework Physics.hpp の inline 指定がなかった不具合を修正 (Thanks @oigami013)
✨ 新機能サンプル
新機能
- 文章の読み上げ機能
- Box2D 連係 (Thanks はむくん)
- 3D 描画時のシャドウ
- 視錐台
- 2D ゲームを容易にウィンドウサイズ可変にする機能 (Thanks はむくん)
- 2D ゲーム用カメラ (Thanks はむくん)
- 2D 描画時の座標変換 Mat3x2 を Push / Pop する機能
- 3D カメラで正投影の設定が可能に (Thanks @HanageBatake)
- 画像の inpaint
- 画像の GrabCut (Thanks はむくん)
- Serial::readBytes() を追加 (Thanks はむくん)
- Quaternion コンストラクタのオーバーロードを追加 (Thanks はむくん)
- フォルダダイアログで新規フォルダの作成を可能に (Thanks @aini_bellwood)
- MeshData 関数で作成できる形状に Capsule を追加 (Thanks bigginer)
- Quad::rotatedAt() を追加
- Grid::inBounds(const Point&) オーバーロードを追加 (Thanks @agehama_)
- Vec2, Float2, Vec3, Float3, Vec4, Float4, Color, ColorF 型にハッシュ関数を提供
- EasingControler に getStart(), getEnd() メンバ関数を追加 (Thanks azaika)
- Window::Resize() にウィンドウのセンタリングをしないオプションを追加
- クリップボードの更新を検知する Clipboard::HasChanged() を追加 (Thanks @agehama_)
- Point, Vec2, Vec3, Vec4, Float2, Float3, FLoat4 型用の Clamp() 関数オーバーロードを追加
- 日本語入力の表示位置を変更する IME::SetCompositionWindowPos() (Thanks 診断人)
- Triangle / Quad::drawFrame() に innerThickness, outerThickness の両方を指定できるオーバーロードを追加 (Thanks azaika)
- Point::length(), Point::lenghtSq() を追加
- Model のテクスチャのアセット登録やノードごとの描画を自動で行う機能を追加
- HTTPClient は URL に明示的に記述されたポート番号を利用するように (Thanks tsuzu)
- Image と cv::Mat_<cv::Vec3b>, cv::Mat_<cv::Vec4b> を相互に変換する機能を追加
バグ修正
- FFT, SoundBeat の更新頻度が低下していた問題を修正
- Font 使用時のメモリリークを修正 (Thanks KICKER)
- RenderTarget 切り替え後、最後に使っていた Texture が直後に描画できなかった問題を修正 (Thanks oigami)
- TextWriter::clear() がクラッシュすることがあった問題を修正 (Thanks ポテトサラダ)
- ファイルの埋め込みで MP3 ファイルを読み込む際、Engine/dll(xXX)/libmpg123 が無いとクラッシュした不具合を修正 (Thanks @shunEnshuu)
- PerlinNoise::octaveNoise0_1(const Vec2&, int32), PerlinNoise::octaveNoise0_1(const Vec3&, int32) の結果が正しくなかったバグを修正
- ScreenCapture::BeginVideo() のデフォルト引数修正
- Image::floodFill() が終了しないことがあったバグを修正 (Thanks はむくん)
- VideoWriter::writeFrame(const Image&, const Point&, const Color&) でフレームが出力されないことがあった不具合を修正
- CSV ファイルに単一の \ を含む要素があるとクラッシュした不具合を修正 (Thanks papas)
- Optional<Type&> の不具合を修正 (Thanks fuyutsubaki)
- Quaternion::normalize() の戻り値がなかったバグを修正 (Thanks oigami)
仕様変更
- LineInt::draw() の引数を変更
- Webcam の解像度に Size(0, 0) を指定するとデフォルトの解像度を使用するように
- Webcam の解像度のデフォルト引数を Size(0, 0) に変更
- Webcam の承認は 1 度だけで済むよう仕様変更 (Thanks うたまろ)
- Legacies.hpp を削除
- Font::drawCenter() の一部オーバーロードを Font::drawAt() に名称変更
- Font::writeCenter() の一部オーバーロードを Font::writeAt() に名称変更
- Image::clip() を Image::clipped() に名称変更
- Rect / Circle / RoundRect::drawShadow() の戻り値を void から *this に仕様変更
- Circle::drawPie(), Circle::drawArc() の戻り値を void から *this に仕様変更
- その他細かい仕様修正
その他
- より軽量で簡単なパッケージインストーラの導入
- 内部で使用する Boost のバージョンを 1.59.0 から 1.61.0 に更新
- libpng のバージョンを 1.6.18 から 1.6.24 に更新
- 付属の M+ フォントを更新。対応漢字が 5,000 から 5,100 に
- タスクシステム補助ライブラリを同梱 (Thanks Rinifisu)
新機能
- 32bit/64bit 両対応
- パイプサーバー (Thanks zenito9970)
- Forward Rendering での Viewport 設定
- MeshData で作成できる 3D 形状を追加
- Line::reversed() (Thanks pctg_x8)
- Line3D::reversed() (Thanks pctg_x8)
- QuadraticBezierPath と CubicBezierPath にデフォルトコンストラクタを追加
バグ修正
- CustomImage から DynamicTexture を初期化できなかったバグを修正
- Wave::Wave(const SecondsF&) のバグを修正
- Box2D の lib のパスが誤っていた問題を修正 (Thanks tsuzu)
- VideoPlayer::operaotr bool() が定義されていなかったバグを修正
- Asset の UnregisterByTag で assert が発生するバグを修正 (Thanks rinifisu)
- ZIPReader::extractAll() のバグを修正 (Thanks asachun)
仕様変更
- Font::drawCenter() の引数を修正
その他
- libwebp のバージョンを 0.4.3 から 0.5.0 に更新
新機能
- Visual Studio 2015 対応
- x64 対応
- TCP 通信によるネットワーク機能
- シリアライズ / デシリアライズ (Thanks @Gorei_50)
- 手書き文字 & 図形認識機能
- 再生している動画のフレームを Image や Texture として取得できる機能
- RenderTexture
- 2D 描画時のカスタム頂点シェーダ
- Mesh 描画時のカスタム頂点シェーダ・ピクセルシェーダに対応
- 頂点シェーダによる高速な 2D 形状・パーティクル生成
- 直前のフレームを Texture として取得する機能
- あらゆる 2D 図形を格納できる Shape 型
- 複数台の Web カメラを同時に扱えるように
- Web カメラの解像度変更に対応 (Thanks furafura)
- 複数台のマイクを同時に扱えるように
- マイク録音のバッファが終端まで達した場合、自動的に先頭に戻る機能を追加 (thanks @GRGSIBERIA)
- 2D 描画時のシザー矩形に対応
- 3D 描画時のシザー矩形に対応
- .exe に埋め込んだファイルのロードに対応
- 2 次ベジェ曲線と 3 次ベジェ曲線を表現するクラスを追加
- 文字列から式を評価する、数式処理機能を追加
- ZIP の書き出しをする ZIPWriter クラスを追加
- 暗号化データが正しく復号できたか検証する機能を追加
- 再生している MIDI サウンドのピッチ変更に対応
- MIDI ファイルのノート情報の取得に対応
- スピードが変更可能なストップウォッチクラスを追加
- マルチスレッドで複数の Image を読み込み・保存する機能を追加
- マルチスレッドで複数の Wave を読み込み・保存する機能を追加
- ファイルの変更や削除を検出する FileMonitor クラスを追加
- ファイルダウンロード、HTTP リクエストを同時に複数扱えるように
- デスクトップの背景と、画面全体のスクリーンショットを取得する機能を追加 (Thanks @hamukun8686)
- 2D 描画の前後関係を Graphics2D::SetZ(uint16) を使い 65536 段階で指定可能に
- 2D 描画時のマルチテクスチャに対応
- 3D 描画時のマルチテクスチャに対応
- Opus 形式のオーディオファイルの読み込みと書き出しに対応
- 標準 GUI にカラーパレットを追加
- Forward レンダリング時の最大光源数を 4 に拡充
- 3D 線分を描画する Line3D::drawForward()
- DynamicTexture が sRGB に対応
- Rect::Rect() のオーバーロード追加
- Ray と Plane の交差判定を追加
- Ray と Disc の交差判定を追加
- Grid::insert_row(), Grid::erase_row() を追加
- Grid::swap() を追加
- DecimalPlace のための _dp User-defined literal を追加
- PyFmt のための _fmt User-defined literal を追加
- Hours, Minutes 等の時間の Format に対応
- CharacterSet::FromUTF32() を追加
- CharacterSet::ToUTF32() を追加
- CharacterSet::PercentEncode() を追加
- Time::GetMillisec64() を追加
- 単一ファイルのサイズを高速に取得する Filesystem::FileSize() を追加
- ByteArray::read(), ByteArray::lookahead() のオーバーロードを追加
- Grid を Initializer lists で初期化できるように
- AllOf, NoneOf, AnyOf が配列にも対応
- Stopwatch64 クラスを追加
- Stopwatch を初期化と同時に start させるオプションを追加
- BOM なしの UTF-8 テキストをエンコード指定なしでも開けるように
- BOM なしのテキスト出力に対応
- initializer-list の Format に対応
- Deflate によるデータ圧縮機能を追加
- _pi ユーザ定義リテラルを追加
- _deg ユーザ定義リテラルを追加
- 乱数エンジンをスレッドごとに作成するように
- Ellipse と Line の交差判定に対応
- Ellipse と Rect の交差判定に対応
- Ellipse と LineString の交差判定に対応
- LineString::calculateBoundingRect() を追加
- Vec2, Vec3, Vec4::setLength(double) を追加
- VS の出力ウィンドウに Image のサムネイルを出力可能に
- 相対パスを求める FileSystem::Relative() を追加
- IReader からの PPM のロードに対応
- AnimatedGIFWriter クラスを追加
- Image::clip() のオーバーロードを追加
- IReader からの Zip のロードに対応
- Ellipse::writeFrame() / overwriteFrame() を追加
- MD5 の値を表現する MD5Value 型を追加
- ファイルやデータの暗号・復号を簡単にする関数を追加
- Optional に has_value() メンバ関数を追加
- Time::GetNanosec() を追加
- Midi::GetPosSec() が返す再生位置を、ノートごとではなくリアルタイムで更新するよう改善
- MIDI メッセージ作成のためのユーティリティ関数を追加 (Thanks @Pctg_x8)
- Array に all(), any(), none() メンバ関数を追加
- Serial に looahead(), skip() メンバ関数を追加
- FileSystem::VolumePath() を追加
- Filesystem::NormalizePath() を追加
- R16G16, B5G6R5, R32G32B32A32F, R16F, R16G16F, R16G16B16A16F, R32F, R32G32F 形式の DDS 画像を Image として読み込めるように
- Grid に Point や Size を受け取るオーバーロードを追加
- Imaging::EdgePreservingFilter() を追加
- Imaging::DetailEnhance() を追加
- Imaging::Stylization() を追加
- ImageR16F, ImageRG16F, ImageRG32F を追加
- Wave::Wave() のオーバーロードを追加 (Thanks LSMPM)
- Wave に assign(), insert(), erase(), push_back(), pop_back() メンバ関数を追加 (Thanks LSMPM)
- 音階を表す enum class PitchName を追加
- PitchName から周波数を計算する機能を追加
- Ogg ファイルからループ情報を取得する機能を追加 (Thanks @Pctg_x8)
- LineString::LineString() のオーバーロードを追加
- LineString に assign(), insert(), erase() 等のメンバ関数を追加
- KeyCombination に operator ==, != を追加 (Thanks hanagebatake)
- Image::getPixel() / sample(), operator[] にオーバーロードを追加
- Rect, RectF に operator==, != を追加
- Graphics2D::SetDepthState() / GetDepthState() を追加
- Texture::operator() のオーバーロードを追加
- Polygon::draw() に、頂点ごとに異なるカラーを指定するためのオーバーロードを追加 (Thanks yuki)
- クライアント座標とスクリーン座標を相互に変換する機能を追加 (Thanks @Wp120_3238)
- Effect::clear() を追加 (Thanks @tyanmahou)
- RoundRect::center を追加
- std::hash の特殊化を追加
- イージング関数をテンプレート引数にとる EaseIn, EaseOut, EaseInOut を追加 (Thanks @Pctg_x8)
- Lerp をより柔軟に
- PerlinNoise に [0, 1] の範囲で結果を返すメンバ関数を追加
- TextureAsset, SoundAsset をファイルアーカイブから作成する際のユーティリティを追加
- リモートデスクトップ環境での動作をサポート
- Vec2 を返すマウス座標関数を追加
- Color::Color(HSV), ColorF::ColorF(HSV) を追加
- UV をカスタマイズできる Box の MeshData を追加
パフォーマンス改善
- BinaryWriter と TextWriter を 64kB までバッファリングするようにし、頻繁に write() する際のパフォーマンスを改善 (Thanks axel)
- テキストファイルの内容をすべて読み込む際のパフォーマンスを大幅に改善
- BMP のエンコード / デコードの速度を大幅に改善
- Random() の速度を改善
- MIDI 再生時の CPU 使用率を低減
- Serial::read() のパフォーマンスを改善
- Web カメラ使用時の CPU 使用率を低減
- CSVReader, INIReader, JSONReader の hasChanged() を大幅に高速化
- Ogg Vorbis オーディオのエンコードを高速化
- AR マーカー検出有効時の CPU 使用率を低減
- CharacterSet::WidenAscii() の速度を改善
- CharacterSet::NarrowAscii() の速度を改善
- Time::UtcOffsetMinutes() の速度を改善
- MD5 計算の速度を改善
- TIFF のエンコードの速度を改善
- GIF のエンコード / デコードの速度を改善
- Image のモザイク処理の速度を改善
- 2D 描画シェーダのパフォーマンスを改善
- 3D 描画のパフォーマンス改善
- その他各機能のパフォーマンス改善
バグ修正
- libqrencode.dll のロードに失敗してアプリが起動しないことがあった問題を修正
- Grid::inBounds() が正しくなかったバグを修正 (Thanks @siguma323)
- 不正な頂点配列で Polygon を初期化した際に boundingRect が未初期化の値になっていたバグを修正 (Thanks @reanisz)
- MultiPolygon の boundingRect とあたり判定が正しくなくなるケースがあったバグを修正 (Thanks dragonicecle)
- GUIToggleSwitch::setRight()/setLeft()/setIsRight() を実行するとトグルスイッチ自体の有効無効が切り替わってしまったバグを修正 (Thanks @agehama_)
- Graphics3D::ResetScene() ですべてのライトがリセットされなかったバグを修正 (Thanks 砂時 計)
- Graphics2D::GetBlandState() / Graphics3D::GetBlandStateForward() のスペルミスを修正 (Thanks 砂時 計)
- "Resource.hpp" という名前のヘッダをプロジェクトで使うとビルドエラーになる不具合を修正 (Thanks dragonicecle)
- Optional の仕様を改善
- Camera の設定が Mouse::Ray() に即座に反映されなかった不具合を修正
- フォルダに対する FileSystem::Extension(), FileSystem::Basename(), FileSystem::FileName() の結果を修正
- 長さの無い Line の Line::closest() が NaN を返していた不具合を修正 (Thanks dragonicecle)
- MultiPolygon が空の Polygon を持つことができた不具合を修正
- ユーザインデックスが異なり、ボタンが同じ Gamepad や XInput のキーを | を使った KeyCombination でまとめられなかったバグを修正 (Thanks @tyanmahou)
- EyeXState::clientFixationPos のスペルミスを修正
- DirectX ランタイムの URL を修正
- Waving::ChangeTempoAndPitchSemitones() の tempo と pitchSemitones が逆だったバグを修正
- Wave::MinSamplingRate のスペルミスを修正
- <Siv3DAddon/LeapMotion.hpp> のバグを修正 (Thanks そつけんぐらし)
- FileArchive のオープンに失敗したり、存在しないファイルをロードするとクラッシュすることがあったバグを修正 (Thanks gorei50)
- Graphics2D::BeginShader() が成功にもかかわらず false を返していたバグを修正
- ウィンドウが非表示の時にダイアログが出現しないことがあった不具合を修正
- DPI 設定に起因した TobiiEyeX の座標ずれの問題を修正 (Thanks @tyanmahou)
- 大量にファイルをドロップした際に取得漏れや例外が生じることがあった問題を修正 (Thanks furafura)
- Mouse::Transorm() と図形のあたり判定に関連するバグを修正 (Thanks @hamukun8686)
- 一部の Intel の iGPU で Particle の色が正しくなくなることがあった問題を修正 (Thanks @hisoji)
- その他細かなバグ修正
仕様変更
- Timer 系クラスを Stopwatch に名称変更 (Thanks @Rinifisu)
- DynamicSound の機能を Sound に統合
- TimerMillisec, TimerSec, TimerMinute を Stopwatch に統合、古いクラスは legacy 名前空間へ移動
- EventTimer は新しい Stopwatch クラスを使用するよう仕様変更、古いクラスは legacy 名前空間へ移動
- TextReader::path や Point::isZero など、多くのプロパティをメンバ関数に変更
- Internet 名前空間のファイルダウンロード・HTTP リクエスト系関数を廃止、HTTPClient クラスに移行
- Webcam 名前空間の機能を Webcam クラスに移行
- Webcam 名前空間の一部の関数を WebcamManager 名前空間に移動
- Reocrder 名前空間の機能を Reocrder クラスに移行
- Reocrder 名前空間の一部の関数を ReocrderManager 名前空間に移動
- Plane は両面表示するよう仕様変更
- Disc は両面表示するよう仕様変更
- Stopwatch の戻り値の型を符号なし整数型から符号付き整数型に変更
- TextReader::readContents() を廃止、仕様を変更して TextReader::readAll() に移行
- MemoryReader を ByteArray に名称変更
- ファイル圧縮アーカイブを作る Compression 系関数を廃止、Compression::Compress() / Decompress() と ZIPWriter に移行
- Logger::WriteImage() を廃止、LOG() と統合
- Imaging::SaveAnimatedGIF() を廃止、AnimatedGIFWriter に移行
- Crypto::~ 系関数を廃止、仕様を改善した Crypto2::~ に移行
- Serial::readByte(), readBytes() を read() に統合
- Quaternion のデフォルトコンストラクタは単位クォータニオンで初期化するよう仕様変更 (Thanks @Wp120_3238)
- Graphics2D::BeginShader() は Graphics2D::BeginVS() と Graphics2D::BeginPS() に移行
- Graphics2D::EndShader() は Graphics2D::EndVS() と Graphics2D::EndPS() に移行
- Mouse::LeftClicked(), RightClicked() を廃止
- クライアント領域外の図形の部分については leftClicked, rightClicked が適用されないよう仕様変更 (Thanks @hamukun8686)
- Input::MouseL 等は、クライアント領域外ではクリック判定しないよう仕様変更 (Thanks @hamukun8686)
- ファイルアーカイブの際、アーカイブされた各ファイルの名前が元のディレクトリ名を含むよう仕様変更
- AR の機能を Webcam クラスに統合
- 仮想フルスクリーンを標準のフルスクリーンに
- ウィジェットの作成関数は IWidget でなくウィジェット自身のポインタを返すよう仕様変更 (Thanks sigureya)
- 一部の Ray::test() を Ray::intersectsAt() に移行
- MemoryReader::asArray() は参照を返すよう仕様変更
- Grid::push_row() を Grid::push_back_row() に名称変更
- Grid::pop_row() を Grid::pop_back_row() に名称変更
- Char クラスを廃止
- EventTimer::setEvent() を addEvent() に名称変更
- 不具合のため CopyOption::Confirm_if_exists を一時的に廃止 (Thanks しぐれん)
- 空の Format() を可能に
- MemoryWriter::toMemoryReader() を MemoryWriter::toByteArray() に名称変更
- XMLReader のメンバ関数を修正
- Color::code を廃止
- Color/ColorF の grayscale プロパティをメンバ関数に変更
- LineString::operator[] を LineString::point() に名称変更
- ZipReader を ZIPReader に名称変更
- MD5 関数の戻り値を String から MD5Value に変更
- Serial クラスのメンバ関数の名前と仕様を変更
- VideoReader::length を num_frames に名称変更
- VideoReader::read() を readFrame() に名称変更
- VideoWriter::write() を VideoWriter::writeFrame() に名称変更
- QR::Encode() のスペルミスを修正
- スプラッシュウィンドウをなめらかにフェードインさせて表示するよう仕様変更
- Grid::size() を Grid::num_elements() に名称変更、Grid::size() は Size を返すよう仕様変更
- RecorderFormat を RecordingFormat に名称変更
- Waving::Synthesize() を廃止、Wave::Wave() に機能を移動
- Effect::isActive を廃止、Effect::isPaused() を使うように
- Graphics2D::SetUVTransform(), GetUVTransform() を廃止、必要な場合はカスタム頂点シェーダを利用するように
- FileArchive のファイル名は、小文字と大文字を区別しないように
- RasterizerState の定数の名称を変更
- その他細かな仕様変更
その他
- 付属の M+ フォントを更新。対応漢字が 4,900 から 5,000 に
- libpng のバージョンを 1.6.16 から 1.6.18 に更新
- libjpeg-turbo のバージョンを 1.3.1 から 1.4.2 に更新
- OpenJPEG のバージョンを 1.5.0 から 1.5.2 に更新
- OpenCV のバージョンを 2.4.9 から 3.0.0 に更新
- 内部で使用する Boost のバージョンを 1.57.0 から 1.59.0 に更新
- libmpg123 のバージョンを 1.20.1 から 1.22.0 に更新
- libogg のバージョンを 1.3.0 から 1.3.2 に更新
- libvorbis のバージョンを 1.3.3 から 1.3.5 に更新
- SoundTouch library のバージョンを 1.8.0 から 1.9.2 に更新
- Siv3D の基本
- 図形を描く
- テクスチャを描く
- テキストを描く
- 文字列と数値の変換
- キーボード入力
- マウス入力
- サウンドの再生
- MIDI の再生
- ウィンドウと背景
- 図形のあたり判定
- 乱数
- ダイアログ
- ドラッグ & ドロップ
- アプリの状態
- テキストファイル
- INI, CSV, JSON
- バイナリファイル
- GUI
- アセット管理
- 画像編集
- Web カメラ
- マイク入力
- 経過時間の測定
- HSV カラー
- ファイルダウンロード
- 3D 描画
- 2D のレンダーステート
- 3D のレンダーステート
- パーティクル
- スクリーンショット
- アプリケーションの公開
- さらに学ぶには
- アプリランチャーを作ろう
- 音楽プレイヤーを作ろう
- 横スクロールゲームを作ろう
- ドット絵エディタを作ろう
- シーン遷移をサポートする SceneManager の使い方
- Siv3D ミニサンプル集
- タスクシステムを使う
- スケッチ
- 画像ビューアー
- オーディオスペクトラム
- マイク入力スペクトラム
- 文字色の反転
- 天気予報
- ドットお絵かき
- 15パズル
- ブロックくずし
- 時計
- 音楽プレイヤー
- ピアノ
- ライフゲーム
- シーン管理
- 地球
- 3Dシーン
- 3D交差判定
- Wooden Mirror
- シューティングゲーム
- Image to Polygon
- Sketch to Polygon
- 軌跡
- Plot3D
- テンポとピッチの変更
- 長方形の影
- Twitterクライアント
- Polygon to Mesh
- 3Dテキスト
- アプリ終了の確認
- 地形の生成
- アーカイブファイル
- GUIのアニメーション
- Aero Glassエフェクト
- Glitch
- リンクテキスト
- 付箋
- シーン切り替え(シルエット)
- MIDIシーケンサー
- 数つなぎ
- 画面を揺らす
- 対称定規
- aobench
- MIDIビジュアライザー
- 電卓
- 手書き文字認識
- 顔検出
- 音声合成
- Image to PhysicsBody