コード例 #1
0
ファイル: light.cpp プロジェクト: gmacon/residual
void glopMaterial(GLContext *c, GLParam *p) {
	int mode = p[1].i;
	int type = p[2].i;
	float v[4] = { p[3].f, p[4].f, p[5].f, p[6].f };
	int i;
	GLMaterial *m;

	if (mode == TGL_FRONT_AND_BACK) {
		p[1].i=TGL_FRONT;
		glopMaterial(c,p);
		mode=TGL_BACK;
	}
	if (mode == TGL_FRONT)
		m = &c->materials[0];
	else
		m = &c->materials[1];

	switch (type) {
	case TGL_EMISSION:
		for (i = 0; i < 4; i++)
			m->emission.v[i] = v[i];
		break;
	case TGL_AMBIENT:
		for (i = 0; i < 4; i++)
			m->ambient.v[i] = v[i];
		break;
	case TGL_DIFFUSE:
		for (i = 0; i < 4; i++)
			m->diffuse.v[i] = v[i];
		break;
	case TGL_SPECULAR:
		for (i = 0; i < 4; i++)
			m->specular.v[i] = v[i];
		break;
	case TGL_SHININESS:
		m->shininess = v[0];
		m->shininess_i = (int)(v[0] / 128.0f) * SPECULAR_BUFFER_RESOLUTION;
		break;
	case TGL_AMBIENT_AND_DIFFUSE:
		for (i = 0; i < 4; i++)
			m->diffuse.v[i] = v[i];
		for (i = 0; i < 4; i++)
			m->ambient.v[i] = v[i];
		break;
	default:
		assert(0);
	}
}
コード例 #2
0
ファイル: light.cpp プロジェクト: cxw42/textglc
void glopMaterial(GLContext *c,GLParam *p)
{
  int mode=p[1].i;
  int type=p[2].i;
  GLfloat *v=&p[3].f;
  int i;
  GLMaterial *m;

  if (mode == GL_FRONT_AND_BACK) {
    p[1].i=GL_FRONT;
    glopMaterial(c,p);
    mode=GL_BACK;
  }
  if (mode == GL_FRONT) m=&c->materials[0];
  else m=&c->materials[1];

  switch(type) {
  case GL_EMISSION:
    for(i=0;i<4;i++)
      m->emission[i]=v[i];
    break;
  case GL_AMBIENT:
    for(i=0;i<4;i++)
      m->ambient[i]=v[i];
    break;
  case GL_DIFFUSE:
    for(i=0;i<4;i++)
      m->diffuse[i]=v[i];
    break;
  case GL_SPECULAR:
    for(i=0;i<4;i++)
      m->specular[i]=v[i];
    break;
  case GL_SHININESS:
    m->shininess=v[0];
    m->shininess_i = (int)(((v[0]/ (float)(128))* (float)(SPECULAR_BUFFER_RESOLUTION)));
    break;
  case GL_AMBIENT_AND_DIFFUSE:
    for(i=0;i<4;i++)
      m->diffuse[i]=v[i];
    for(i=0;i<4;i++)
      m->ambient[i]=v[i];
    break;
  default:
    assert(0);
  }
}
コード例 #3
0
ファイル: light.cpp プロジェクト: Akz-/residual
void glopMaterial(GLContext *c, GLParam *p) {
	int mode = p[1].i;
	int type = p[2].i;
	Vector4 v(p[3].f, p[4].f, p[5].f, p[6].f);
	GLMaterial *m;

	if (mode == TGL_FRONT_AND_BACK) {
		p[1].i = TGL_FRONT;
		glopMaterial(c, p);
		mode = TGL_BACK;
	}
	if (mode == TGL_FRONT)
		m = &c->materials[0];
	else
		m = &c->materials[1];

	switch (type) {
	case TGL_EMISSION:
		m->emission = v;
		break;
	case TGL_AMBIENT:
		m->ambient = v;
		break;
	case TGL_DIFFUSE:
		m->diffuse = v;
		break;
	case TGL_SPECULAR:
		m->specular = v;
		break;
	case TGL_SHININESS:
		m->shininess = v.X;
		m->shininess_i = (int)(v.X / 128.0f) * SPECULAR_BUFFER_RESOLUTION;
		break;
	case TGL_AMBIENT_AND_DIFFUSE:
		m->diffuse = v;
		m->ambient = v;
		break;
	default:
		assert(0);
	}
}
コード例 #4
0
ファイル: vertex.c プロジェクト: bhdminh/uGFX
void glopColor(GLContext * c, GLParam * p)
{

    c->current_color.X = p[1].f;
    c->current_color.Y = p[2].f;
    c->current_color.Z = p[3].f;
    c->current_color.W = p[4].f;
    c->longcurrent_color[0] = p[5].ui;
    c->longcurrent_color[1] = p[6].ui;
    c->longcurrent_color[2] = p[7].ui;

    if (c->color_material_enabled) {
	GLParam q[7];
	q[0].op = OP_Material;
	q[1].i = c->current_color_material_mode;
	q[2].i = c->current_color_material_type;
	q[3].f = p[1].f;
	q[4].f = p[2].f;
	q[5].f = p[3].f;
	q[6].f = p[4].f;
	glopMaterial(c, q);
    }
}