|
dev.gamez.lv Latvian Game Developers Community
|
View previous topic :: View next topic |
Author |
Message |
zutiic Indago dalībnieks
Joined: 12 Jan 2004 Posts: 140 Location: Rīga
|
Posted: Fri Jul 08, 2005 11:44 am Post subject: man netaisaas fullscreens |
|
paraleeli 2speelju taisiisanai tikko pasaaku arii direct3d maaciities un savu "dzini" prieksdienaam rakstiit. bet piedziivojumi saakas jau pie d3d inicializaacijas, t.i. windowed veidaa man uztaisa aplikaaciju, bet fullscreenaa nee.
varbuut kaads var izbraukt cauri sources fragmentam kas atbild par d3d pielaissanu un pateikt kas pa lietu un kur ir kluuda??
Code: | void crate_device (char* title, int width, int height, int pos_x, int pos_y, bool fullscr)
{
wc.cbSize = sizeof(WNDCLASSEX); // WNDCLASSEX struktuuras izmeers
wc.style = CS_HREDRAW | CS_VREDRAW; // loga stils
wc.lpfnWndProc = MsgProc; // "procedulaaraas funkcijas" :D nosaukums
wc.cbClsExtra = 0; // extra klases infa
wc.cbWndExtra = 0; // extra loga infa
wc.hInstance = GetModuleHandle(NULL); // aplikaacijas vadiiba, vai kkas...
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);// loga ikona
wc.hCursor = LoadCursor(NULL, IDC_ARROW); // peles kursors
wc.hbrBackground = NULL; // fona kraasa
wc.lpszMenuName = NULL; // izveelne(menu)
wc.lpszClassName = "eee"; // loga klases nosaukums
wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);// minimizeetaa loga ikona
RegisterClassEx( &wc );
// taisaam aplikaacijas logu
hWnd = CreateWindow( "eee", title,
WS_OVERLAPPEDWINDOW, pos_x, pos_y, width, height,
GetDesktopWindow(), NULL, wc.hInstance, NULL );
// initializeejam direct3d
if(!(D3D_dev = Direct3DCreate9(D3D_SDK_VERSION))) MessageBox(NULL, "failed to init. d3d", "eeerr", MB_OK);
// ieguust displeja modi (wtf?)
if(FAILED(D3D_dev->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &display_mode))) MessageBox(NULL, "error setting the display mode", "eeerr", MB_OK);
// paarbauda vai dzelzji ir iistie
if(FAILED(D3D_dev->GetDeviceCaps(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, &D3D_caps))) MessageBox(NULL, "failed to init. d3d - problems with hardware capabilities", "eeerr", MB_OK);
ZeroMemory( &p_parameters, sizeof(p_parameters) );
p_parameters.SwapEffect = D3DSWAPEFFECT_DISCARD;
p_parameters.BackBufferCount = 1;
p_parameters.BackBufferFormat = D3DFMT_UNKNOWN;
p_parameters.EnableAutoDepthStencil = TRUE;
p_parameters.AutoDepthStencilFormat = D3DFMT_D16;
if(fullscr)
{
p_parameters.Windowed = FALSE; // loga mode: fullscreens
p_parameters.BackBufferWidth = width; // ekraana platums (px)
p_parameters.BackBufferHeight = height; // ekraana augstums (px)
}
else p_parameters.Windowed = TRUE; // loga mode: nav fullscreens, jeb windoweec
// paarbaudaam kaadu vetexu processingu var lietot
DWORD v_processing = 0;
if(D3D_caps.VertexProcessingCaps != 0) v_processing |= D3DCREATE_HARDWARE_VERTEXPROCESSING; else v_processing |= D3DCREATE_SOFTWARE_VERTEXPROCESSING;
// taisam d3d "deviici"
if(FAILED( D3D_dev->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,
v_processing, &p_parameters, &D3D_rend_dev))) MessageBox(NULL, "failed to create device - make sure you have directX 9", "eeerr", MB_OK);
// iesleedzam "dziljumbufferi"
D3D_rend_dev->SetRenderState(D3DRS_ZENABLE, true);
// iestataam muusu "defaulto cullmodi"
D3D_rend_dev->SetRenderState(D3DRS_CULLMODE, 3);
// paraadam logu
ShowWindow( hWnd, SW_SHOWDEFAULT );
UpdateWindow( hWnd );
} |
un peecaak izsaucam shito funkciju...
Code: | crate_device("mana aplikaacija", 800, 600, 100, 100, true); |
ja grib "windoweetu" (bool fullscr=false), viss straadaa, bet fullscreena gadiijumaa uzlec messidzbox "failed to create device - make sure you have directX 9"(11aa rindinja no apakssas) un citeeju debbugeri:
Quote: | First-chance exception in engine_test.exe: 0xC0000005: Access Violation. |
nekaadu sintakses kluudu nav:
Quote: | --------------------Configuration: engine_test - Win32 Debug--------------------
Compiling...
engine_test.cpp
Linking...
engine_test.exe - 0 error(s), 0 warning(s) |
kas pa lietu?? :/ |
|
Back to top |
|
|
Guest
|
Posted: Fri Jul 08, 2005 11:55 am Post subject: |
|
Cienītais, kā gan var tev rasties FullScreen, ja tev ir dotas loga atrašanās koordinātes?
Labi, joks!
Paskaties, vai tev ir jaunākā FX 5200 sākot videokarte un vai tev ir DirectX 9.0c un jaunākie nVidias driveri 77.89.
Joks, atkal!
Reku kļūda!
if(FAILED( D3D_dev->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,
v_processing, &p_parameters, &D3D_rend_dev))) MessageBox(NULL, "failed to create device - make sure you have directX 9", "eeerr", MB_OK); |
|
Back to top |
|
|
zutiic Indago dalībnieks
Joined: 12 Jan 2004 Posts: 140 Location: Rīga
|
Posted: Fri Jul 08, 2005 12:14 pm Post subject: |
|
es taa labu laiciju peetiiju taas tevis rakstiitaas koda rindinjas, konam', liidz iebraucu ka tas i tiessi tas pats ko es pats uzrakstiiju varbuutaas buutu bijis labaak ja es to messidzboxu nebuutu licis - tad iztiktu tikai ar "access violation"
aizmirsu piemineet, ka magiskaa dzeltenaa bulinja, kas paraadiijaas liidz ar programmas palaissanu, noraadiija tiessi uz naakoshajaam koda rindinjaam, tb uz... Code: | // iesleedzam "dziljumbufferi"
D3D_rend_dev->SetRenderState(D3DRS_ZENABLE, true); |
..un taa bija vieta pie kuras programma apstaajaas. |
|
Back to top |
|
|
Guest
|
Posted: Fri Jul 08, 2005 12:38 pm Post subject: |
|
Nē, cienītais, tu to nerakstiji!
Tad tev bija jāparāda tā problēma, ka tā ir tieši tur, nevis jādod vesels kods + debug + jautājums. Varēji aprakstīt to problēmu izejot no šitā, ko rādiju. Un beigās tu saprastu pats, kur problēma. |
|
Back to top |
|
|
zutiic Indago dalībnieks
Joined: 12 Jan 2004 Posts: 140 Location: Rīga
|
Posted: Fri Jul 08, 2005 1:14 pm Post subject: |
|
oke. kur apstaajaas programma, mineeju. kur man paraadiijaas messidzbox ka nevar uztaisiit d3d "deviici" mineeju.
es ar ssito saaku tiiri vai izmist - kodu saliidzinaaju gan ar dx9 sdk dotaa tuta kodu, gan ar "drunken heyna" tutoriaaliem. jaa, probleema ir pie if(FAILED( D3D_dev->CreateDevic...pamparam, bet kur tiessi???
1. ar D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL nekaadu probleemu nevajadzeetu buut - tie ir "typedefi", tikpat noteikti kaa "true" un "false"
2. hWnd, v_processing, p_parameters, D3D_rend_dev man ir globaali mainiigie
...vieniigi man bij doma ka ar hWnd kkas nav kaartiibaa, taapee jautaajums: vai CreateDevice funkcija prasa kautko no hWnd, kas buutu shai HWND klasei(?) privaats vai kkaads taads, ne publisks??? deel kaa vispaar rodaas "access violation" - deel taa ka censaas piekluut klases privaatajiem mainiigajiem??
(bet sviestainaakais ir tas ka bez taa fullscreena viss straadaa) |
|
Back to top |
|
|
gazz
Joined: 03 Jan 2004 Posts: 355 Location: Teika
|
Posted: Fri Jul 08, 2005 1:15 pm Post subject: |
|
kljuuda ir shajaa rindinjaa
Code: | p_parameters.BackBufferFormat = D3DFMT_UNKNOWN; |
kad tu izveido logu tad tu nevari pats noteikt kraasu formaatu/dziljumu, jo tev ir jaapaljaujaas uz desktop uzstaadiijumiem un tapeec tu direct3d pasaki ka tu nezini kaads ir kraasu formaats ar D3DFMT_UNKNOWN. savukaart veidojot fullscreen tev ir direct3d jaapasaka ko tu veelies un jaapaarbauda D3DCAPS kaadas kraasu formaatus videokarte uztur. piemeeram aizstaajot sho rindinju ar Code: | p_parameters.BackBufferFormat = D3DFMT_A8R8G8B8; | viss straadaaas un tiks izmantotas 32 bit kraasaas. papeeti par shitiem formaatiem tuvaak. |
|
Back to top |
|
|
zutiic Indago dalībnieks
Joined: 12 Jan 2004 Posts: 140 Location: Rīga
|
Posted: Fri Jul 08, 2005 1:16 pm Post subject: |
|
oppaa...!!! liels plds, gazz |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|