void idSplineList::draw(bool editMode) { int i; vec4_t yellow(1, 1, 0, 1); if (controlPoints.Num() == 0) { return; } if (dirty) { buildSpline(); } qglColor3fv(controlColor); qglPointSize(5); qglBegin(GL_POINTS); for (i = 0; i < controlPoints.Num(); i++) { qglVertex3fv(*controlPoints[i]); } qglEnd(); if (editMode) { for(i = 0; i < controlPoints.Num(); i++) { glBox(activeColor, *controlPoints[i], 4); } } //Draw the curve qglColor3fv(pathColor); qglBegin(GL_LINE_STRIP); int count = splinePoints.Num(); for (i = 0; i < count; i++) { qglVertex3fv(*splinePoints[i]); } qglEnd(); if (editMode) { qglColor3fv(segmentColor); qglPointSize(3); qglBegin(GL_POINTS); for (i = 0; i < count; i++) { qglVertex3fv(*splinePoints[i]); } qglEnd(); } if (count > 0) { //assert(activeSegment >=0 && activeSegment < count); if (activeSegment >=0 && activeSegment < count) { glBox(activeColor, *splinePoints[activeSegment], 6); glBox(yellow, *splinePoints[activeSegment], 8); } } }
void BoxParts::draw(GLContext &c) { const dReal * m = getRotation(); // R(gl) const dReal *pos_ = getPosition(); Position pos(pos_[0], pos_[1], pos_[2]); DEF_R(r, pos, m); glMultMatrixd(r); Size &sz = m_cmpnt->size(); glBox(sz.glx(), sz.gly(), sz.glz()); }
/* ================ idPointListInterface::drawSelection ================ */ void idPointListInterface::drawSelection() { int count = selectedPoints.Num(); for (int i = 0; i < count; i++) { glBox(colorRed, *getPoint(selectedPoints[i]), 4); } }
void glBox(GLfloat l, GLfloat h, GLfloat w, bool bWired, GLfloat r, GLfloat g, GLfloat b, GLfloat a) { glBox(l,h,w,0.f,0.f,0.f,bWired,r,g,b,a); }
void glBox(bool bWired, GLfloat r, GLfloat g, GLfloat b, GLfloat a) { glBox(1.f,1.f,1.f,bWired,r,g,b,a); }
void glBox(bool bWired, GLfloat r, GLfloat g, GLfloat b) { glBox(bWired,r,g,b,1.f); }
int DrawGLScene( GLvoid ) // Здесь будет происходить вся прорисовка { glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); // Очистить экран и буфер глубины glEnable(GL_COLOR_MATERIAL); //FSAA - сглаживание glEnable(GL_MULTISAMPLE_ARB); //ALPHA glEnable(GL_ALPHA_TEST); //BLENDING glEnable(GL_BLEND); //Most effective func are: //GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA //GL_SRC_ALPHA_SATURATE, GL_ONE //GL_ONE_MINUS_DST_ALPHA,GL_DST_ALPHA //GL_ONE,GL_ONE - best fit with light glBlendFunc(GL_SRC_ALPHA, GL_ONE); //glMatrixMode(GL_MODELVIEW); glLoadIdentity(); // Сбросить текущую матрицу //-5.5, 3.9 print_msg(-5.5,-4,"x", F_MAGN*10); viewpoint[2]=10*cos(angleV[0])*cos(angleV[1]); viewpoint[0]=10*sin(angleV[0])*cos(angleV[1]); viewpoint[1]=10*sin(angleV[1]); gluLookAt(viewpoint[0],viewpoint[1],viewpoint[2],0,0,0,0,cos(angleV[1]),0); glPushMatrix(); glScaled(F_MAGN,F_MAGN,F_MAGN); if (C_SPHERE!=NULL && C_SIZE>0) { glPushMatrix(); //double r=C_SPHERE[0].get_radius(); glTranslated(-L_BOX/2,H_BOX/2,-W_BOX/2); for(int i=0; i<C_SIZE; i++) C_SPHERE[i].draw_center(); glPopMatrix(); } glBox(L_BOX,H_BOX,W_BOX,0,.11,.12,.13,.6f); if (C_SPHERE!=NULL && C_SIZE>0) { glPushMatrix(); //double r=C_SPHERE[0].get_radius(); glTranslated(-L_BOX/2,H_BOX/2,-W_BOX/2); for(int i=0; i<C_SIZE; i++) C_SPHERE[i].draw(); glPopMatrix(); } glPopMatrix(); glDisable(GL_ALPHA_TEST); glDisable(GL_BLEND); glDisable(GL_MULTISAMPLE_ARB); glDisable(GL_COLOR_MATERIAL); glFlush(); return true; // Прорисовка прошла успешно }