- 152 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 15:41:18 ]
- for(i=0;i<WIDTH;i++){
for(j=0;j<HEIGHT;j++){ /* test source */ glGetDoublev(GL_MODELVIEW_MATRIX, model); glGetDoublev(GL_PROJECTION_MATRIX, proj); glGetIntegerv(GL_VIEWPORT, view); glReadPixels(i, j, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &z1); gluUnProject(i, j, 0, model, proj, view, &x1, &y1, &z1); //スクリーン上の座標をワールド座標で取得 /* test source */ } printf(" at (%d, %d) --> ", i, j); printf(" at unproject (%lf, %lf, %lf)\n", x1, y1, z1); } スクリーン上の各ピクセルが、ワールド座標上でどうなっているのか知りたくて 上のようなソースを書いたのですが、変な値が入ってきます。 視点を<10 10 -20>において、<10 10 0>を見ているときに 左端のX〜右端のXを表示しても at (0, 256) --> at unproject (10.552285, 10.465990, -19.000000) at (255, 256) --> at unproject (9.672081, 10.465990, -19.000000) 画面の幅が縦横256なのに、こんな小さな差しか出てきません。 これだとスクリーンは左端〜右端までワールド座標中で約-0.5〜0.5の差でしかないということでしょうか gluPerspective(45.0, (double)w / (double)h, 1.0, 1000.0);はこのようにしております。 スクリーンの点から空間の点を知る方法を教えてください
|

|