예제 #1
0
//------------------------------------------------------------------------
void TBuilder_Model_Ogre::Build()
{
  mFGI = TModuleLogic::Get()->GetFGI();

  int cntPart = mPatternModel->mMngNode_Collection.GetCountPart();
  for( int iPart = 0 ; iPart < cntPart ; iPart++ )
  {
    std::string namePart = mPatternModel->mMngNode_Collection.GetNamePart(iPart);
    int cntVariant = mPatternModel->mMngNode_Collection.GetCountVariant(namePart);
    for( int iVariant = 0 ; iVariant < cntVariant ; iVariant++ )
    {
      std::string nameVariant = mPatternModel->mMngNode_Collection.GetNameVariant(namePart, iVariant);
      TBaseNode_Model* pNode = mPatternModel->mMngNode_Collection.Get(namePart, nameVariant);
      if( pNode==NULL )
        continue;
      if( mPatternModel->GetTypeContent()==TModelItem::eModel )
      {
        TModelNode_Model* pModelNode = (TModelNode_Model*)pNode;
        pModelNode->mPtrModel->BuildByModule_Graphic();
      }
      else
      {
        TShapeNode_Model* pShapeNode = (TShapeNode_Model*)pNode;
        BuildShape(pShapeNode);
      }
    }
  }
  PostBuild();
}
예제 #2
0
QGLWidgetTest::QGLWidgetTest(const QGLFormat& Format, QWidget *parent) : QGLWidget(Format, parent) {
#else
QGLWidgetTest::QGLWidgetTest(QWidget * parent) : QGLWidget(parent) {
#endif

#ifdef _DEBUG
	SysUtils::RedirectIOToConsole();
#endif

	GString s;
	GError err;

	// Depth Into The Screen
	gX = -8.0f;
	gY = -8.0f;
	gZ = -22.0f;

	gKernel = new GKernel();

	// build path for data (textures)
	gDataPath = SysUtils::AmanithPath();
	if (gDataPath.length() > 0)
		gDataPath += "data/";

	gWireFrame = G_TRUE;
	gAnim = G_TRUE;
	gAng1 = gAng2 = gAng3 = 0;

	gFillRule = G_ODD_EVEN_RULE;
	gFillMode = 1;
	gStepAng1 = 0.004f;
	gStepAng2 = -0.002f;
	gStepAng3 = 0.001f;
	gAng1 = gAng2 = gAng3 = 0;

	// load the texture
	gTexture = (GPixelMap *)gKernel->CreateNew(G_PIXELMAP_CLASSID);
	if (!gTexture)
		abort();

	s = gDataPath + "metal05.png";
	err = gTexture->Load(StrUtils::ToAscii(s), "expandpalette=true");
	if (err != G_NO_ERROR)
		abort();
}
//------------------------------------------------------------

// destructor
QGLWidgetTest::~QGLWidgetTest() {

	if (gKernel)
		delete gKernel;
	DeleteFont();
}

//----- paintGL ----------------------------------------------
void QGLWidgetTest::paintGL() {

	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
	setLightAndTransform();

	if (gAnim) {
		gAng1 += gStepAng1;
		gAng2 += gStepAng2;
		gAng3 += gStepAng3;
	}
	// build the shape
	BuildShape(gAng1, gAng2, gAng3);
	// triangulate
	GenerateTessellation();
	DrawTriangles(gTrianglesPts, gTrianglesIdx);
	glFlush();
}