GLの基本的なプログラム
- マウスで物体を回転させるAsaTrackball.h
- OBJファイルを読み込むOBJLoader.h
https://bitbucket.org/asama-yaya/objloadertoglutno...
一番単純な読み込み(だと思う)
glslは使っていない。
頂点データ(m_vertices)とそれのインデックス(m_indices)を使って描画している。
頂点データの構造(OBJVERTEX)はあらかじめ決められた14パターンから選ぶ必要があるのが難点。
その理由もあり、頂点とかは全部float。
頂点をポインタではなくstd::vectorで表しているが処理速度に影響があるかは不明。
三角形の数×3だけの頂点データを保持していて、メモリがもったいないと感じるかもしれないが、
GPUでの処理を考えるとこっちのほうがいいらしい(検索におけるキャッシュのヒット率が高くなるので)
頂点バッファ使っていないので、転送すること考えるとこっちのほうが遅いかも
一番単純な読み込み(だと思う)
glslは使っていない。
頂点データ(m_vertices)とそれのインデックス(m_indices)を使って描画している。
頂点データの構造(OBJVERTEX)はあらかじめ決められた14パターンから選ぶ必要があるのが難点。
その理由もあり、頂点とかは全部float。
頂点をポインタではなくstd::vectorで表しているが処理速度に影響があるかは不明。
三角形の数×3だけの頂点データを保持していて、メモリがもったいないと感じるかもしれないが、
GPUでの処理を考えるとこっちのほうがいいらしい(検索におけるキャッシュのヒット率が高くなるので)
頂点バッファ使っていないので、転送すること考えるとこっちのほうが遅いかも
https://bitbucket.org/asama-yaya/objloader_ding-di...
glsl(頂点バッファオブジェクト)を使ったバージョン。
ついでにインデックスバッファを使う。
glDrawElementの第4引数は、インデックスのスタート地点を示すところだけど、
インデックスバッファを使っているときは、NULL以外受け付けないようです。
しかたがないので、マテリアルの数だけインデックスバッファを作っている。
glsl(頂点バッファオブジェクト)を使ったバージョン。
ついでにインデックスバッファを使う。
glDrawElementの第4引数は、インデックスのスタート地点を示すところだけど、
インデックスバッファを使っているときは、NULL以外受け付けないようです。
しかたがないので、マテリアルの数だけインデックスバッファを作っている。
コメントをかく