まだまだ途中なので追記していく予定
それぞれの表記が変わりました
| 0.8.x | 0.9.x |
|---|---|
| ci::Vec2i, ci::Vec3i, ci::Vec4i | ivec2, ivec3, ivec4 |
| ci::Vec2f, ci::Vec3f, ci::Vec4f | vec2, vec3, vec4 |
| ci::Vec2d, ci::Vec3d, ci::Vec4d | dvec2, dvec3, dvec4 |
| ci::Matrix33f, ci::Matrix44f | mat3, mat4 |
| ci::Matrix33d, ci::Matrix44d | dmat3, dmat4 |
| ci::Quatf, ci::Quatd | quat, dquat |
各クラスにメンバとして定義されていた各関数が ci 以下に移動しました。
| 0.8.x | 0.9.x | 備考 |
|---|---|---|
| myVec.length() | ci::length(myVec) | |
| myVec.normalized() | ci::normalize(myVec) | |
| myQuat.inverse() | ci::inverse(myQuat) | |
| myQuat.getAngle() | ci::angle(myQuat) | 違うかも? |
いままで、単位行列を作る場合
Matrix44f mat;
mat.setToIdentity();
としていたが、引数なしのコンストラクタが単位行列を返すようになった。
そのため、setToIdentity を置き換える場合は
mat4 mat;
mat = mat4();
とかになる模様。
今まで ci::gl::Texture で作っていたものは
ci::gl::TextureBase を基底クラスとしたより厳密なクラスに別れました。
ci::gl::Texture1d,ci::gl::Texture2d,ci::gl::Texture3d がある模様。
(つまりボリュームテクスチャが使える?←未検証)
そして生成方法も、コンストラクタは全てprotectedに変更され
クラスそのものをインスタンス化するのではなく、ci::gl::TextureXd::create() 経由になり、
基本的には ci::gl::TextureXdRef を使うように変更なりました。
Texture2d を使うのか、Texture3d を使うのかわからないクラスの引数とかは
TextureBaseRef を指定しとくといいかも。
その後いろいろ試してみたけど単純に TextureRef でいいかも。
ci::gl::FboRef が追加され、ci::gl::Fbo 自体を
インスタンス化しないようになりました。
| 0.8.x | 0.9.x | 備考 |
|---|---|---|
| ci::gl::Fbo(); | 廃止 | protected コンストラクタになりました |
| new ci::gl::Fbo() | 廃止 | 同上 |
| - | ci::gl::Fbo::create() | 引数は一緒だが返り値がci::gl::FboRefになりました |
今まで getTexture() にて取得していた Fbo 自体のテクスチャは
getColorTexture() となった模様?(要検証)
なんか ScopedFramebuffer というものが追加されまして
これを使うと、そのスコープから処理が抜けた場合に
勝手に後処理をしてくれるようになった模様。
これにより 0.8.x では以下のように書いていたものが
void hoge(){
myFbo.bindFramebuffer();
{
// いろんな処理
}
myFbo.unbindFramebuffer();
}
0.9.x では
void hoge(){
ci::gl::ScopedFramebuffer fbScp( myFbo );
// いろんな処理
}
みたいになる模様。
こちらも ci::gl::GlslProgRef が追加され、
ci::gl::GlslProg 自体をインスタンス化しないようになりました。
| 0.8.x | 0.9.x | 備考 |
|---|---|---|
| ci::gl::GlslProg(); | 廃止 | protected コンストラクタになりました |
| new ci::gl::GlslProg() | 廃止 | 同上 |
| - | ci::gl::GlslProg::create() | 引数は一緒だが返り値がci::gl::GlslProgRefになりました |
こちらも Fbo 同様 ScopedGlslProg というものが追加されてました
0.8.x では
void hoge(){
myShader.bind();
{
// 描画処理
}
myShader.unbind();
}
と書いていたのが 0.9.x では
void hoge(){
ci::gl::ScopedGlslProg shaderScp( myShader );
// 描画処理
}
となります。
ただなぜか shader->unbind() がなくなった(!)ので
shader->bind() を自前で書いた場合には自己責任で
gl::getStockShader( gl::ShaderDef().color() )->bind();
とかしないとダメかも?
詳しいことは調べてみないとよくわからない。
(個人的には便利なんだか何なんだかよくわからん。)
全部 ci::gl 経由で使えってことになりました。
詳しいことは samples/_opengl を見ろとのこと。
表題の通り Viewport の指定の仕方が変更になった。
また、ci::gl::getViewport() の返り値が
ci::Area から std::pair<ci::ivec2,ci::ivec2> になりました。
いままで
TriMesh mesh;
ObjLoader loader( (DataSourceRef)ci::app::loadResource(path) );
loader.load( &mesh );
ci::gl::VboMesh mesh = ci::gl::VboMesh( mesh );
これから
ObjLoader loader( (DataSourceRef)ci::app::loadResource(path) );
ci::gl::VboMeshRef mesh = ci::gl::VboMesh::create( loader );
コマンドラインの引数をたまに使ってるんだけど
どこにも書いてなくてめっちゃ困った。
理由は特に調べてない。
appendVertex がなくなった appendPosition に変更???