示例#1
0
//-----------------------------------------------------------------------------
void mglCanvasGL::AddLight(int n,mglPoint r,mglPoint d,char cc, mreal br,mreal /*ap*/)
{
	mglColor c(cc);
	mglColor AmbLight = mglColor(AmbBr,AmbBr,AmbBr);
	mglColor DifLight = mglColor(br,br,br);
	GLenum lght[8] = {GL_LIGHT0,GL_LIGHT1,GL_LIGHT2,GL_LIGHT3,GL_LIGHT4,
			GL_LIGHT5,GL_LIGHT6,GL_LIGHT7};
	float amb[4], pos[4],dif[4],dir[4];
	bool inf = mgl_isnan(r.x);
	if(n<0 || n>7)	{	SetWarn(mglWarnLId,"AddLight");	return;	}
	if(c.Valid())
	{
		DifLight = c*br;
		AmbLight = c*AmbBr;
	}
	dif[0] = DifLight.r;	dif[1] = DifLight.g;
	dif[2] = DifLight.b;	dif[3] = 1.;
	amb[0] = AmbLight.r;	amb[1] = AmbLight.g;
	amb[2] = AmbLight.b;	amb[3] = 1.;
	if(inf)
	{	pos[0] = d.x;	pos[1] = d.y;	pos[2] = d.z;	pos[3] = 0;	}
	else
	{	pos[0] = r.x;	pos[1] = r.y;	pos[2] = r.z;	pos[3] = 1;	}
	dir[0] = d.x;	dir[1] = d.y;	dir[2] = d.z;
	glShadeModel(GL_SMOOTH);
	//glLightf(GL_LIGHT0, GL_SPOT_CUTOFF, 5.0);
	//glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, pos);

	glLightfv(lght[n], GL_AMBIENT, amb);
	glLightfv(lght[n], GL_DIFFUSE, dif);
	//glLightfv(lght[n], GL_SPECULAR, spc);
	glLightfv(lght[n], GL_POSITION, pos);
	if(!inf)	glLightfv(lght[n], GL_SPOT_DIRECTION, dir);
	glEnable(lght[n]);
}
示例#2
0
//-----------------------------------------------------------------------------
void mglCanvasGL::Clf(mglColor Back)
{
	mglCanvas::Clf(Back);
	if(Back==NC)	Back = mglColor(BDef[0]/255.,BDef[1]/255.,BDef[2]/255.);
	gl_clf(Back);
}
示例#3
0
//-----------------------------------------------------------------------------
void mglCanvasGL::Clf(const char *col)
{
	mglCanvas::Clf(col);
	gl_clf(mglColor(BDef[0]/255.,BDef[1]/255.,BDef[2]/255.));
}
示例#4
0
void MGL_EXPORT mgl_clf_rgb_(uintptr_t *gr, mreal *r, mreal *g, mreal *b)
{	_GR_->Clf(mglColor(*r,*g,*b));	}
示例#5
0
void MGL_EXPORT mgl_clf_chr_(uintptr_t *gr, const char *ch, int)
{	_GR_->Clf(mglColor(*ch));	}
示例#6
0
void MGL_EXPORT mgl_clf_rgb(HMGL gr, double r, double g, double b)
{	mglCanvas *gg = dynamic_cast<mglCanvas *>(gr);	if(gg)	gg->Clf(mglColor(r,g,b));	}
示例#7
0
void MGL_EXPORT mgl_clf_chr(HMGL gr, char ch)
{	mglCanvas *g = dynamic_cast<mglCanvas *>(gr);	if(g)	g->Clf(mglColor(ch));	}
示例#8
0
//-----------------------------------------------------------------------------
void MGL_EXPORT mgl_set_color(char id, double r, double g, double b)
{
	for(long i=0;mglColorIds[i].id;i++)
		if(mglColorIds[i].id==id)	mglColorIds[i].col = mglColor(r,g,b);
}