まだまだ途中なので追記していく予定
それぞれの表記が変わりました
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 に変更???