TheReclif Temat założony przez niniejszego użytkownika |
[DirectX3D] Brak odpowiedzi po skompilowaniu i uruchomieniu aplikacji » 2014-04-27 14:28:03 Witam... Ostatnio piszę program w wykorzystujący DirectX 11. Wszystko pięknie, ładnie, aż do momentu stworzenia i wykorzystania funkcji DrawScene: void DrawScene( ID3D11DeviceContext * d3d11DevCon, ID3D11RenderTargetView * renderTargetView, IDXGISwapChain * SwapChain ) { float bgColor[] = { 0.0, 0.7, 0.0, 1.0 }; d3d11DevCon->ClearRenderTargetView( renderTargetView, bgColor ); SwapChain->Present( 0, 0 ); }
Wykorzystałem ją w głównej pętli programu(która jest funkcją MessageLoop): int MessageLoop( MSG msg, InterfaceHierarchy Interface ) { ZeroMemory( & msg, sizeof( MSG ) ); while( true ) { if( PeekMessage( & msg, NULL, 0, 0, PM_REMOVE ) ) { if( msg.message == WM_QUIT ) break; TranslateMessage( & msg ); DispatchMessage( & msg ); } else { UpdateScene(); DrawScene( Interface.d3d11DevCon, Interface.renderTargetView, Interface.SwapChain ); } } return( int ) msg.wParam; }
Kiedy wstawię funkcję DrawScene w blok komentarza, program działa normalnie-odpala się konsola, potem okno i czeka na zakończenie przez wciśnięcie klawisza "Esc"(okno jest puste, bez oznak wykorzystania DirectX3D). Po usunięciu komentarza, program po udanej kompilacji odpala się razem z konsolą, ale od razu po włączeniu pojawia się informacja o braku odpowiedzi i trzeba program zamknąć. Konsola deweloperska zwraca kod błędu 0xFF, czyli 255. Nie wiem, co może powodować taki stan rzeczy, ale jak tak dalej pójdzie, to nie będę mógł spełnić swoich marzeń o grze na własnym, autorskim silniku. Dodam, że korzystam z Code::Blocksa i kompilatora Microsoft Visual C++ 2005/2008. Będę wdzięczny za pomoc. |
|
Parapet |
» 2014-04-27 14:49:00 Może masz sprzęt za słaby. |
|
TheReclif Temat założony przez niniejszego użytkownika |
» 2014-04-27 15:22:47 |
|
TheReclif Temat założony przez niniejszego użytkownika |
» 2014-04-27 22:14:03 Ponawiam pytanie ze względu na brak konkretnej odpowiedzi. |
|
RazzorFlame |
» 2014-04-28 15:09:34 Podaj kod jak wywołujesz funkcję MessageLoop czy jakoś tak ;) |
|
TheReclif Temat założony przez niniejszego użytkownika |
» 2014-04-28 16:15:32 #include "default.hpp"
struct InterfaceHierarchy { D11SwapChain * SwapChain; D11Device * d3d11Device; D11DevContext * d3d11DevCon; D11RenTarView * renderTargetView; };
InterfaceHierarchy Interface;
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { const int Width = 800; const int Height = 700; LPSTR EndName; EndName = "Program testowy"; if( Start( hInstance ) == false ) { return 1; } HWND hWnd = CreateNewWindow( "MainGameWindow", EndName, hInstance, Width, Height ); ShowWindow( hWnd, SW_SHOWDEFAULT ); UpdateWindow( hWnd ); InitializeDirectx11App( hInstance, Width, Height, hWnd, Interface.SwapChain, Interface.d3d11Device, Interface.d3d11DevCon, Interface.renderTargetView ); InitScene(); MSG msg; MessageLoop( msg, Interface ); ReleaseObjects( Interface.d3d11DevCon, Interface.d3d11Device, Interface.SwapChain ); }
To właśnie ten kod |
|
TheReclif Temat założony przez niniejszego użytkownika |
» 2014-05-04 10:35:57 Niestety, ale z powodu braku odpowiedzi przez dłuższy czas, muszę ponowić pytanie. Sam próbowałem rozwiązać problem, ale nie udało mi się to. |
|
RazzorFlame |
» 2014-05-04 14:30:41 Sprawdź na której dokładnie linijce występuje błąd. Przed i po każdej linijce wyświetl jakiś informacyjny tekst do konsoli i sprawdź która linijka powoduje kłopoty. |
|
« 1 » 2 |