Пример #1
0
MySceneManager::MySceneManager()
{
	auto pEngine = MyIrrlichtEngine::GetEngine();
	smgr	= pEngine->GetSceneManager();
	driver	= pEngine->GetVideoDriver();
	timer	= pEngine->GetDevice()->getTimer();
}
Пример #2
0
        void DrawTerrain(Gpu::Frame* frame)
        {
            frame->PushAllState();

            Virtual::StaticGeometry* m_geometry = m_terrain->GetGeometry();
            if (!m_geometry)
            {
                m_geometry = Cast<Virtual::StaticGeometry*>(Utility::ParsePunkFile(System::Environment::Instance()->GetModelFolder() + m_terrain->GetStaticMeshFilename()));
                m_terrain->SetGeometry(m_geometry);
            }

            if (m_geometry)
            {
                if (!m_geometry->GetGpuCache().IsOnGpu())
                    m_geometry->GetGpuCache().Update(GetVideoDriver());


                for (size_t i = 0; i != m_terrain_material->GetTextureSlotCount(); ++i)
                {
                    Virtual::TextureSlot* slot = m_terrain_material->GetTextureSlot(i);
                    if (!slot->GetGpuCache().IsOnGpu())
                        slot->GetGpuCache().Update(GetVideoDriver());

                    if (m_terrain_material->GetTextureSlot(i)->IsDiffuseMapSlot())
                        frame->SetDiffuseMap(0, m_terrain_material->GetTextureSlot(i)->GetGpuCache().GetTexture(), 0);
                    if (m_terrain_material->GetTextureSlot(i)->IsNormalMapSlot())
                        frame->SetNormalMap(m_terrain_material->GetTextureSlot(i)->GetGpuCache().GetTexture(), 1);
                }

                frame->SetLightModel(Gpu::LightModel::PerVertexDiffuse);

                frame->SetWorldMatrix(Math::mat4::CreateTranslate(0, 0, 0));
                //frame->MultWorldMatrix(Math::mat4::CreateRotation(1, 0, 0, m_x));
                //frame->MultWorldMatrix(Math::mat4::CreateRotation(0, 1, 0, m_y));
                frame->MultWorldMatrix(Math::mat4::CreateRotation(0, 0, 1, m_z));
                frame->Submit(m_geometry->GetGpuCache().GetGpuBuffer());
                frame->PopAllState();
            }
        }
Пример #3
0
void CDlg::Draw(_RECT rect)
{

	IVideoDriver* pVideoDriver;
	pVideoDriver = GetVideoDriver();
	int nSourceX, nSourceY,nSourceWidth,nSourceHeight,nDestX,nDestY;
	nSourceX = 0;
	nSourceY = 0;
	nSourceWidth = GetWidth();
	nSourceHeight = GetHeight();
	nDestX = GetDisplayLeft();
	nDestY = GetDisplayTop();
	pVideoDriver->RenderQuad(GetTexture(), nSourceX, nSourceY, nSourceWidth,
		nSourceHeight,nDestX,nDestY,XSCALE, YSCALE, ANGLE, GetAlpha());
	

	CCommonWnd::Draw();

}
Пример #4
0
 void ProcessNaviMesh(Render2 *render, Scene::Node *node, System::Object* o)
 {
     if (!o)
         return;
     AI::NaviMesh *mesh = (AI::NaviMesh*)o;
     auto m_frame = render->GetCurrentFrame();
     if (m_frame->IsEnabledNaviMeshRendering())
     {
         if (mesh)
         {
             auto r = Gpu::AsRenderable(*mesh, m_frame->GetVideoDriver());
             m_frame->PushAllState();
             m_frame->EnableTexturing(false);
             m_frame->EnableLighting(false);
             m_frame->EnableBlending(true);
             m_frame->SetDiffuseColor(0, 0, 1.0, .5);
             m_frame->Submit(r, true);
             m_frame->PopAllState();
         }
     }
     render->ProcessChildren(node);
 }