Exemplo n.º 1
0
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);
		}
	}

}
Exemplo n.º 2
0
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());
}
Exemplo n.º 3
0
/*
================
idPointListInterface::drawSelection
================
*/
void idPointListInterface::drawSelection() {
	int count = selectedPoints.Num();
	for (int i = 0; i < count; i++) {
		glBox(colorRed, *getPoint(selectedPoints[i]), 4);
	}
}
Exemplo n.º 4
0
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);
}
Exemplo n.º 5
0
void glBox(bool bWired, GLfloat r, GLfloat g, GLfloat b, GLfloat a)
{
	glBox(1.f,1.f,1.f,bWired,r,g,b,a);
}
Exemplo n.º 6
0
void glBox(bool bWired, GLfloat r, GLfloat g, GLfloat b)
{
	glBox(bWired,r,g,b,1.f);
}
Exemplo n.º 7
0
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;                // Прорисовка прошла успешно
}