//----------------------------------------------------------------------------- void mglCanvasGL::Finish() { #if MGL_USE_DOUBLE #define MGL_GL_TYPE GL_DOUBLE #else #define MGL_GL_TYPE GL_FLOAT #endif if(Prm.size()>0) { PreparePrim(0); /* glVertexPointer(3, MGL_GL_TYPE, sizeof(mglPnt), &(Pnt[0].x)); // something wrong with arrays glNormalPointer(MGL_GL_TYPE, sizeof(mglPnt), &(Pnt[0].u)); glColorPointer(4, MGL_GL_TYPE, sizeof(mglPnt), &(Pnt[0].r)); glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_NORMAL_ARRAY); glEnableClientState(GL_COLOR_ARRAY);*/ int pdef=PDef; mreal ss=pPos, ww=PenWidth; mglPrim p; for(size_t i=0;i<Prm.size();i++) { p=GetPrm(i); PDef=p.n3; pPos=p.s; PenWidth=p.w; register long n1=p.n1, n2=p.n2, n3=p.n3, n4=p.n4; switch(p.type) { /* case 0: mark_draw(Pnt[n1],n4,p.s,0); break; case 1: line_draw(n1,n2); break; case 2: trig_draw(n1,n2,n3); break; case 3: quad_draw(n1,n2,n3,n4); break;*/ case 0: mark_draw(Pnt[n1],n4,p.s,0); break; case 1: line_draw(Pnt[n1],Pnt[n2],0); break; case 2: trig_draw(Pnt[n1],Pnt[n2],Pnt[n3],true,0); break; case 3: quad_draw(Pnt[n1],Pnt[n2],Pnt[n3],Pnt[n4],0); break; case 4: glyph_draw(p,0); break; } } PDef=pdef; pPos=ss; PenWidth=ww; } glFinish(); // glBegin(GL_LINES); glColor3f(0,0,1); glVertex2f(0.1,0.1); glVertex2f(0.9,0.9); glEnd(); }
static void game_draw_balls(struct s_rend *rend, const struct s_vary *fp, const float *bill_M, float t) { static const GLfloat color[5][4] = { { 1.0f, 1.0f, 1.0f, 0.7f }, { 1.0f, 0.0f, 0.0f, 1.0f }, { 0.0f, 1.0f, 0.0f, 1.0f }, { 0.0f, 0.0f, 1.0f, 1.0f }, { 1.0f, 1.0f, 0.0f, 1.0f }, }; int ui; sol_color_mtrl(rend, 1); for (ui = curr_party(); ui > 0; ui--) { if (ui == ball) { float ball_M[16]; float pend_M[16]; m_basis(ball_M, fp->uv[ui].e[0], fp->uv[ui].e[1], fp->uv[ui].e[2]); m_basis(pend_M, fp->uv[ui].E[0], fp->uv[ui].E[1], fp->uv[ui].E[2]); glPushMatrix(); { glTranslatef(fp->uv[ui].p[0], fp->uv[ui].p[1] + BALL_FUDGE, fp->uv[ui].p[2]); glScalef(fp->uv[ui].r, fp->uv[ui].r, fp->uv[ui].r); glColor4f(color[ui][0], color[ui][1], color[ui][2], color[ui][3]); ball_draw(rend, ball_M, pend_M, bill_M, t); } glPopMatrix(); } else { glPushMatrix(); { glTranslatef(fp->uv[ui].p[0], fp->uv[ui].p[1] - fp->uv[ui].r + BALL_FUDGE, fp->uv[ui].p[2]); glScalef(fp->uv[ui].r, fp->uv[ui].r, fp->uv[ui].r); glColor4f(color[ui][0], color[ui][1], color[ui][2], 0.5f); mark_draw(rend); } glPopMatrix(); } } glColor4f(1.0f, 1.0f, 1.0f, 1.0f); sol_color_mtrl(rend, 0); }
static void game_draw_balls(const struct s_file *fp, const float *bill_M, float t) { static const GLfloat color[5][4] = { { 1.0f, 1.0f, 1.0f, 0.7f }, { 1.0f, 0.0f, 0.0f, 1.0f }, { 0.0f, 1.0f, 0.0f, 1.0f }, { 0.0f, 0.0f, 1.0f, 1.0f }, { 1.0f, 1.0f, 0.0f, 1.0f }, }; int ui; for (ui = curr_party(); ui > 0; ui--) { if (ui == ball) { float ball_M[16]; float pend_M[16]; m_basis(ball_M, fp->uv[ui].e[0], fp->uv[ui].e[1], fp->uv[ui].e[2]); m_basis(pend_M, fp->uv[ui].E[0], fp->uv[ui].E[1], fp->uv[ui].E[2]); glPushMatrix(); { glTranslatef(fp->uv[ui].p[0], fp->uv[ui].p[1] + BALL_FUDGE, fp->uv[ui].p[2]); glScalef(fp->uv[ui].r, fp->uv[ui].r, fp->uv[ui].r); glEnable(GL_COLOR_MATERIAL); glColor4fv(color[ui]); ball_draw(ball_M, pend_M, bill_M, t); glDisable(GL_COLOR_MATERIAL); } glPopMatrix(); } else { glPushMatrix(); { glTranslatef(fp->uv[ui].p[0], fp->uv[ui].p[1] - fp->uv[ui].r + BALL_FUDGE, fp->uv[ui].p[2]); glScalef(fp->uv[ui].r, fp->uv[ui].r, fp->uv[ui].r); glColor4f(color[ui][0], color[ui][1], color[ui][2], 0.5f); mark_draw(); } glPopMatrix(); } } glColor4f(1.0f, 1.0f, 1.0f, 1.0f); }