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; } }
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); } } }
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; }
VideoCapture::VideoCapture(HWND hWnd) { CoInitialize(NULL); // HRESULT hr; InitVideoFilters(); IPin *pPin = GetPin(m_pBaseFilter, PINDIR_OUTPUT); ShowFilterProperty(pPin); StartRender(hWnd); }
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++; }
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(); }
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(); }
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); }