Hallo Easy-Coding Community,
Problem:
Ich habe eine Rendering Funktion, die in einer while(true) läuft. Darin ist ein Aufruf zum Matchen des Bildes, welcher das Bild alle 10 Frames ansuchen soll. Das funktioniert auch sehr gut. Nur stoppt das Bild dafür etwa 1 Sekunde. Da dachte ich mit, klar mache ich das Teil in einen Thread. Nur wartet die Render Funktion weiterhin auf die Match Funktion bis sie fertig ist. Habt ihr eine Idee wie ich das machen kann, dass der Matcher asynchron zum Rendern läuft.
Kurz gesagt, wenn er das Bild analysiert hat soll er sich einfach Melden und das Ergebnis einblenden.
Danke und Grüße,
Sw00sh!
Alles anzeigen
Problem:
Ich habe eine Rendering Funktion, die in einer while(true) läuft. Darin ist ein Aufruf zum Matchen des Bildes, welcher das Bild alle 10 Frames ansuchen soll. Das funktioniert auch sehr gut. Nur stoppt das Bild dafür etwa 1 Sekunde. Da dachte ich mit, klar mache ich das Teil in einen Thread. Nur wartet die Render Funktion weiterhin auf die Match Funktion bis sie fertig ist. Habt ihr eine Idee wie ich das machen kann, dass der Matcher asynchron zum Rendern läuft.
Kurz gesagt, wenn er das Bild analysiert hat soll er sich einfach Melden und das Ergebnis einblenden.
Danke und Grüße,
Sw00sh!
Quellcode
- HRESULT
- MRBBApp::Render(){
- HRESULT hr = S_OK;
- try{
- // Get Video
- m_pCamera->GetVideoBuffer(m_pData);
- if(this->frameCounter != 0 && this->frameCounter % 10 == 0){
- matcher->match(m_iVideoImgWidth, m_iVideoImgHeight,sizeof(short),(short*)m_pData,TEMP);
- //<--- Die Funktion soll asynchron zum Rest laufen
- }
- // Set Video Texture
- //m_pData is RGB565
- m_pBackPlane->SetTexture(m_pData);
- // Clear the backbuffer to a blue color
- hr = m_pD3DMDevice->Clear( 0, NULL, D3DMCLEAR_TARGET | D3DMCLEAR_ZBUFFER, D3DMCOLOR_XRGB(0,0,255), 1.0f, 0 );
- // Begin the scene
- if( SUCCEEDED( hr = m_pD3DMDevice->BeginScene() ) ){
- // Draw Video Background
- m_pBackPlane->Draw();
- hr = m_pD3DMDevice->EndScene();
- }
- hr = m_pD3DMDevice->Present( NULL, NULL, NULL, NULL );
- }catch(...){
- OutputDebugString(L"Exception in Render-Loop caught!\n");
- MessageBox(NULL,L"Exception in Render-Loop!", L"Error!", MB_OK | MB_ICONERROR);
- return E_FAIL;
- }
- CalculateFramerate();
- return hr;
- }