예제 #1
0
void MainWindow::paintEvent(QPaintEvent *pe)
{
    //    ui->graphicsView->scene()->clear();

    ui->Image->setDisabled(false);

    if (m_bShouldRefreshView)
    {
        QMainWindow::paintEvent(pe);

        if (m_bStartNormalRender)
        {
            m_bAutoRendering = false;
            StartSingleRender();
        }
        else if (m_bAutoRendering)
        {
            StartRender(false);
        }
        else
        {
            EnableRefreshAndLoad(true);
        }
        m_bShouldRefreshView = false;
    }
}
예제 #2
0
void MainWindow::on_AutoRender_clicked(bool checked)
{
    if (!GetRaytracer()->GetMesh().isMeshLoaded())
    {
        ui->AutoRender->setChecked(false);
        return;
    }

    m_bAutoRendering = checked;

    //ui->StartRender->setEnabled(m_bAutoRendering);
    //ui->StartRender->setChecked(m_bAutoRendering);

    if (m_bAutoRendering)
    {
        //progress.setMaximum( GetRaytracer()->GetBucketsCount() );

        QObject::disconnect(GetRaytracer(), SIGNAL(sigBucketDone(int)), &progress, SLOT(setValue(int)));
        QObject::connect(GetRaytracer(), SIGNAL(sigThreadsFinished()), this, SLOT(slotRenderFinished()), Qt::UniqueConnection);
        if (!m_bRendering)
        {
            StartRender(false);
        }
    }
}
예제 #3
0
파일: ghost.cpp 프로젝트: Laxa/ddnet
void CGhost::TryRenderStart(int Tick, bool ServerControl)
{
	// only restart rendering if it did not change since last tick to prevent stuttering
	if(m_NewRenderTick != -1 && m_NewRenderTick == Tick)
	{
		StartRender(Tick);
		Tick = -1;
		m_RenderingStartedByServer = ServerControl;
	}
	m_NewRenderTick = Tick;
}
예제 #4
0
VideoCapture::VideoCapture(HWND hWnd)
{
    CoInitialize(NULL);
    //	HRESULT hr;

    InitVideoFilters();

    IPin *pPin = GetPin(m_pBaseFilter, PINDIR_OUTPUT);
    ShowFilterProperty(pPin);
    StartRender(hWnd);
}
예제 #5
0
			void Renderer::Push( IElement*	pElement ){
				if(m_uiSize>=MAX_WINDOW){
					StartRender();
				}
				
				m_vPositionSizeArray[m_uiSize]		=	pElement->m_vPositionSize;
				m_vUVPositionSizeArray[m_uiSize]	=	pElement->m_vUV;
				m_vColorArray[m_uiSize]				=	pElement->m_vColor;
				m_vCustomArray[m_uiSize]			=	pElement->m_vCustom;
	
				//标记位置
				//pElement->m_uiMark					=	m_uiSize;
				m_uiSize++;
			}
예제 #6
0
void TerrainOverlay::RenderBeforeWater()
{
	if (!m_Terrain)
		return; // should never happen, but let's play it safe

#if CONFIG2_GLES
#warning TODO: implement TerrainOverlay::RenderOverlays for GLES
#else
	glEnable(GL_BLEND);
	glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
	glDepthMask(GL_FALSE);
	// To ensure that outlines are drawn on top of the terrain correctly (and
	// don't Z-fight and flicker nastily), draw them as QUADS with the LINE
	// PolygonMode, and use PolygonOffset to pull them towards the camera.
	// (See e.g. http://www.opengl.org/resources/faq/technical/polygonoffset.htm)
	glPolygonOffset(-1.f, -1.f);
	glEnable(GL_POLYGON_OFFSET_LINE);

	pglActiveTextureARB(GL_TEXTURE0);
	glDisable(GL_TEXTURE_2D);

	StartRender();

	ssize_t min_i, min_j, max_i, max_j;
	GetTileExtents(min_i, min_j, max_i, max_j);
	// Clamp the min to 0, but the max to -1 - so tile -1 can never be rendered,
	// but if unclamped_max<0 then no tiles at all will be rendered. And the same
	// for the upper limit.
	min_i = clamp(min_i, ssize_t(0), m_Terrain->GetTilesPerSide());
	min_j = clamp(min_j, ssize_t(0), m_Terrain->GetTilesPerSide());
	max_i = clamp(max_i, ssize_t(-1), m_Terrain->GetTilesPerSide()-1);
	max_j = clamp(max_j, ssize_t(-1), m_Terrain->GetTilesPerSide()-1);

	for (m_j = min_j; m_j <= max_j; ++m_j)
		for (m_i = min_i; m_i <= max_i; ++m_i)
			ProcessTile(m_i, m_j);

	EndRender();

	// Clean up state changes
	glEnable(GL_CULL_FACE);
	glEnable(GL_DEPTH_TEST);
	glDisable(GL_POLYGON_OFFSET_LINE);
	glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
	glDepthMask(GL_TRUE);
	glDisable(GL_BLEND);
#endif
}
	void Game::Run()
	{
		Initialize();

		while(GameProperties::Running)
		{
			Update();

			StartRender();
			Render();
			FinishRender();

			SDL_Delay(1);
		}

		Finalize();
	}
예제 #8
0
void TerrainOverlay::Render()
{
	m_Terrain = g_Game->GetWorld()->GetTerrain();

	StartRender();

	ssize_t min_i, min_j, max_i, max_j;
	GetTileExtents(min_i, min_j, max_i, max_j);
	// Clamp the min to 0, but the max to -1 - so tile -1 can never be rendered,
	// but if unclamped_max<0 then no tiles at all will be rendered. And the same
	// for the upper limit.
	min_i = clamp(min_i, ssize_t(0), m_Terrain->GetTilesPerSide());
	min_j = clamp(min_j, ssize_t(0), m_Terrain->GetTilesPerSide());
	max_i = clamp(max_i, ssize_t(-1), m_Terrain->GetTilesPerSide()-1);
	max_j = clamp(max_j, ssize_t(-1), m_Terrain->GetTilesPerSide()-1);

	for (m_j = min_j; m_j <= max_j; ++m_j)
		for (m_i = min_i; m_i <= max_i; ++m_i)
			ProcessTile(m_i, m_j);

	EndRender();
}
예제 #9
0
void MainWindow::StartSingleRender()
{
    m_bStartNormalRender = false;

    ui->AutoRender->setEnabled(false);
    ui->AutoRender->setChecked(false);

    progress.setLabelText("Rendering");
    progress.setMaximum( GetRaytracer()->GetBucketsCount() );
    progress.show();

    QObject::connect(GetRaytracer(), SIGNAL(sigBucketDone(int)), &progress, SLOT(setValue(int)), Qt::UniqueConnection);
    QObject::connect(GetRaytracer(), SIGNAL(sigThreadsFinished()), this, SLOT(slotRenderFinished()), Qt::UniqueConnection);

//    QObject::connect(GetRaytracer()->GetMesh(), SIGNAL(sigLoadedMesh(bool)), this, SLOT(ui->AutoRender->setEnabled(bool)), Qt::UniqueConnection);


    if (!m_bAutoRendering)
    {
        StartRender();
    }

//    EnableRefreshAndLoad(false);
}