Новичок
Профиль
Группа: Участник
Сообщений: 44
Регистрация: 14.12.2005
Репутация: нет Всего: нет
|
Добрый день, друзья. Буду Вам очень благодарен если есть возможность решить проблему, а именно не могу вывести изображение на экран. Вот предоставляю некоторый фрагмент кода: // функция инициализацииКод | HRESULT CAPInitialize( HWND hWnd, LPDIRECT3DDEVICE9 _pDirect3Device, DWORD RenderWidth, DWORD RenderHeight, DWORD CaptureWidth, DWORD CaptureHeight, BOOL InvertSource, BOOL StereoCameras, int StereoMode ) { LogOut2("\nEnter to CAPInitialize!\n"); HRESULT hr; HBITMAP hBitmap; BITMAP Bitmap;
D3DLOCKED_RECT D3DLockRect; BYTE *pTxtBits; //! texture buffer //BYTE *pLineTxtBits; //LONG TxtPitchL; // Pitch of texture //... //! g_hWnd = hWnd; hBitmap = NULL; hBitmap = (HBITMAP)::LoadImage( NULL, "Directx.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION ); if( !hBitmap ) { LogOut2("ERROR: Error loading bmp file!"); return S_FALSE; } GetObject( hBitmap, sizeof(BITMAP), &Bitmap );
//! Set mono/stereo capture support. //=== bCAPStereoCameras = StereoCameras; iCAPStereoMode = StereoMode; CaptureWidth = Bitmap.bmWidth; CaptureHeight = Bitmap.bmHeight; CAPCaptureWidthL = CaptureWidth; CAPCaptureHeightL = CaptureHeight; CAPRenderWidthL = RenderWidth; CAPRenderHeightL = RenderHeight; //===
#if defined(__defSCREENVERTEX__)
//! Загружаем текстру if( FAILED( D3DXCreateTextureFromFile( _pDirect3Device, "Directx.bmp"/*!*/, &g_pTextureLeft/*!*/ ) ) )//! { LogOut2("ERROR: UNABLE to access LEFT Capture texture!"); return E_FAIL; } LogOut2("SUCCESS: Creates a texture from a file to the LEFT camera!");
if( bCAPStereoCameras ) { //! Загружаем текстру if( FAILED( D3DXCreateTextureFromFile( _pDirect3Device, "Directx.bmp"/*!*/, &g_pTextureRight/*!*/ ) ) )//! { LogOut2("ERROR: UNABLE to access RIGHT Capture texture!"); return E_FAIL; } LogOut2("SUCCESS: Creates a texture from a file to the RIGHT camera!"); }// if( bCAPStereoCameras ) g_pTextureLeft->LockRect( 0, &D3DLockRect, 0, 0 ); { //! КОПИРОВАНИЕ pTxtBits = static_cast<BYTE *>(D3DLockRect.pBits); //DWORD* pBitmapBits = (DWORD*)Bitmap.bmBits; //pLineTxtBits = pTxtBits; //TxtPitchL = D3DLockRect.Pitch; for(int row = 0; row < CAPCaptureHeightL; row++ ) { // DWORD* pPixels = (DWORD*)pLineTxtBits; for (int col = 0; col < CAPCaptureWidthL; col++) { // pPixels = pBitmapBits; //! закраска оранжевым цветом pTxtBits[0] = 0xEE; pTxtBits[1] = 0x85; pTxtBits[2] = 0x11; pTxtBits[3] = 0xff; // Set Alpha, прозрачный цвет
//! смещение индексатора pTxtBits += 4; //pPixels++; //pBitmapBits++; }// for( col ) //pLineTxtBits += D3DLockRect.Pitch; }// for( row )
} g_pTextureLeft->UnlockRect(0); if( bCAPStereoCameras ) { g_pTextureRight->LockRect( 0, &D3DLockRect, 0, 0 ); { //! КОПИРОВАНИЕ указателей pTxtBits = static_cast<byte *>(D3DLockRect.pBits); //DWORD* pBitmapBits = (DWORD*)Bitmap.bmBits; //pLineTxtBits= pTxtBits; //TxtPitchL = D3DLockRect.Pitch; //! Закрашивание for(int row = 0; row < CAPCaptureHeightL; row++ ) { // DWORD* pPixels = (DWORD*)pLineTxtBits; for (int col = 0; col < CAPCaptureWidthL; col++) { //! закраска оранжевым цветом pTxtBits[0] = 0xEE; pTxtBits[1] = 0x85; pTxtBits[2] = 0x11; pTxtBits[3] = 0xff; // Set Alpha, прозрачный цвет
pTxtBits += 4; // pPixels++; //pBitmapBits++; }// for( col ) //pLineTxtBits += D3DLockRect.Pitch; }// for( row )
} g_pTextureRight->UnlockRect(0); }// if( bCAPStereoCameras )
//! Create Vertex buffers if( FAILED( hr = _pDirect3Device->CreateVertexBuffer(4*sizeof(SCREENVERTEX), D3DUSAGE_WRITEONLY, D3DFVF_SCREENVERTEX, D3DPOOL_MANAGED, &g_pLeftVertexBuff/*!*/, NULL) ) )//! create video Capture { LogOut2("ERROR: UNABLE to create video Capture for Left VertexBuffer!"); return hr;//! E_FAIL } LogOut2("SUCCESS: Create video Capture for LEFT VertexBuffer!"); if( FAILED( hr = _pDirect3Device->CreateVertexBuffer(4*sizeof(SCREENVERTEX), D3DUSAGE_WRITEONLY, D3DFVF_SCREENVERTEX, D3DPOOL_MANAGED, &g_pRightVertexBuff/*!*/, NULL) ) )//! create video Capture { LogOut2("ERROR: UNABLE to create video Capture for Right VertexBuffer!"); return hr;//! E_FAIL } LogOut2("SUCCESS: Create video Capture for RIGHT VertexBuffer!");
#endif // __defSCREENVERTEX__
//! Load up screen vertexes with proper left and right eye viewport values. CAPSetVertex(); LogOut2("Out of CAPInitialize.\n"); return hr; }// CAPInitialize()
|
// код рендерингаКод | HRESULT Render3D() { HRESULT hr; if(g_pDirect3DDevice == NULL) return S_FALSE; if( g_bDeviceLost ) { if( FAILED(hr = g_pDirect3DDevice->TestCooperativeLevel()) ) { if( (D3DERR_DEVICELOST == hr) || (D3DERR_DEVICENOTRESET == hr) ) { return hr; } g_bDeviceLost = FALSE;//! OK } }// if( g_bDeviceLost ) //! In Side x Side mode set the ViewPort for the left eye. if (iIWRStereoscopyMode == SIDE_X_SIDE) { if( FAILED(hr = SetViewport(LEFT_EYE) ) ) { LogOut2("ERROR: An error occurred while setting SetViewPort for LEFT_EYE regime SIDE_X_SIDE!"); return hr; } } //! Clear the back Buffer to a red color g_pDirect3DDevice->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB( 255, 0, 0 ), 1.0f, 0 ); //! Render Left eye with drawprimitive if( FAILED(hr = CAPRenderEyes( g_pDirect3DDevice, LEFT_EYE )) ) { LogOut2("ERROR: Error while in the performance CAPRenderEyes() for LEFT_EYE!"); return hr; } // Render geometry for left eye //================================= if( SUCCEEDED(hr = g_pDirect3DDevice->BeginScene() ) ) { g_pDirect3DDevice->EndScene(); } //... //================================= return S_OK;
}// Render3D()
|
// код рендеринга для каждого глаза:Код | HRESULT CAPRenderEyes( LPDIRECT3DDEVICE9 _pDirect3DDevice, VWD_EYES Eye ) {
_pDirect3DDevice->BeginScene();//! { //! отключаем z-буферы _pDirect3DDevice->SetRenderState( D3DRS_ZENABLE, FALSE ); _pDirect3DDevice->SetRenderState( D3DRS_ZWRITEENABLE, FALSE ); //! setup формат вершин обработки _pDirect3DDevice->SetFVF( D3DFVF_SCREENVERTEX ); if( Eye == LEFT_EYE ) {// LEFT_EYE //! _pDirect3DDevice->SetTexture( 0, g_pTextureLeft ); _pDirect3DDevice->SetStreamSource( 0, g_pLeftVertexBuff, 0, sizeof(CUSTOMVERTEX) ); } else {// RIGHT_EYE if( bStereoCameras ) { _pDirect3DDevice->SetTexture( 0, g_pTextureRight ); } else { _pDirect3DDevice->SetTexture( 0, g_pTextureLeft ); } _pDirect3DDevice->SetStreamSource( 0, g_pRightVertexBuff, 0, sizeof(CUSTOMVERTEX) ); } _pDirect3DDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP,0, 2 ); _pDirect3DDevice->SetTexture( 0, NULL );
} _pDirect3DDevice->EndScene( );//! //! восстанавливаем z-буфер _pDirect3DDevice->SetRenderState( D3DRS_ZENABLE, TRUE ); _pDirect3DDevice->SetRenderState( D3DRS_ZWRITEENABLE, TRUE ); return S_OK;
}// CAPRenderEyes()
|
столкнулся с такой проблемой, что картинка не выводиться. Это сообщение отредактировал(а) 2faust - 26.4.2013, 14:04
|