GLUT でうまく表示されない?
以前作成した現在時刻を WebGL で表示するコードを GLUT を使用した方法に書き直し.
右側の面が正しく表示されていない.
見えない面を表示しない様に判断しているコードは次の様なもの.
{ Vd3 ev = eye ; Vd3 nv ; Vd3 pt ; for (size_t fvIndex=0 ; fvIndex<pia.size() ; fvIndex++) { long fVert = pia[fvIndex].x ; long nVert = pia[fvIndex].y ; Vd3 n1 = ::Vx_get(nrms,nVert) ; Vd3 p1 = ::Vx_get(pnts,fVert) ; nv = nv + n1 ; pt = p1 ; } ev = ev - pt ; nv = nv.Normalized() ; ev = ev.Normalized() ; double theta = ::deg(acos(nv.Dot(ev))) ; if (theta > 90) { continue ; } }
原因は,描画用に与えている視点で目標点が加算されていなかったため.
void draw(void) { GonsA* ga = get_GonsA() ; Vd3 eye = ::get_c_glut()->EP ; // eye+= ::get_c_glut()->TP ; ::GonsA_to_gl(*ga,eye) ; }
最終的にはこのあたり(C_glut)の見直しが必要.