Пример #1
0
void drawObject(){
  shaderProgram->use();
  glBindVertexArray(vao);
  //assignVBOtoAttribute("color", pColors, 4);
  lightsOn();
  mat4 matM1=scale(matM, vec3(2.0,2.0,2.0));
  vecZ=vec3(-globalEngine->X,-globalEngine->Y,-globalEngine->Z);
  matM1=translate(matM1, vecZ);
  vecZ=vec3(0.42,-0.57,0);//globalEngine->X, globalEngine->Y, globalEngine->Z
  matM1=translate(matM1, vecZ);

  glUniformMatrix4fv(shaderProgram->getUniformLocation("P"), 1, false, value_ptr(matP));
  glUniformMatrix4fv(shaderProgram->getUniformLocation("V"), 1, false, value_ptr(matV));
  glUniformMatrix4fv(shaderProgram->getUniformLocation("M"), 1, false, value_ptr(matM1));
 
	//mat4 matV1 = lookAt(vec3(globalCamera->X+globalEngine->X-4, globalCamera->Y+globalEngine->Y+7, -5.0f),
		//	vec3(0.0f, 0.0f, 60.0f), vec3(0.0f, 1.0f, 0.0f));

  //glUniformMatrix4fv(shaderProgram->getUniformLocation("V"), 1, false, value_ptr(matV1));
  drawMesh(loaded);

  matM = rotate(matM, globalEngine->angle, vec3(0, 1, 0));
  matM=scale(matM, vec3(0.08,0.08,0.08));
  //vecZ=vec3(-5,8,0);//globalEngine->X, globalEngine->Y, globalEngine->Z
  //matM=translate(matM, vecZ);

  
  glUniformMatrix4fv(shaderProgram->getUniformLocation("M"), 1, false, value_ptr(matM));
  
  drawMesh(model);

  glBindVertexArray(0);
}
Пример #2
0
void Model::draw()
{
	if (!ok) return;

	if (!animated) {
		glCallList(dlist);
	} else {
		if (ind) animate(0);
		else {
			if (!animcalc) {
				animate(0);
				animcalc = true;
			}
		}
		lightsOn(GL_LIGHT4);
        drawModel();
		lightsOff(GL_LIGHT4);

		// effects are unfogged..?
		glDisable(GL_FOG);

		// draw particle systems
		for (size_t i=0; i<header.nParticleEmitters; i++) {
			particleSystems[i].draw();
		}

		// draw ribbons
		for (size_t i=0; i<header.nRibbonEmitters; i++) {
			ribbons[i].draw();
		}

		if (gWorld && gWorld->drawfog) glEnable(GL_FOG);
	}
}