játékfejlesztés.hu
FórumGarázsprojectekCikkekSegédletekJf.hu versenyekKapcsolatokEgyebek
Legaktívabb fórumozók:
Asylum:    5441
FZoli:    4892
Kuz:    4455
gaborlabor:    4449
kicsy:    4304
TPG:    3402
monostoria:    3284
DMG:    3172
HomeGnome:    2919
Matzi:    2519

Pretender:    2498
szeki:    2440
Seeting:    2306
Geri:    2186
Orphy:    1893
Joga:    1791
Bacce:    1783
MaNiAc:    1735
ddbwo:    1625
syam:    1491
Korábbi postok
> 1 < [2] [3] [4] [5] [6] [7] [8] [9] [10] [15] [20] [25] [30] [31]
Elodin - Tag | 172 hsz       Online status #211473   2017.07.04 22:47 GMT+1 óra  
Nvm.

Ezt a hozzászólást Elodin módosította (2017.07.05 09:03 GMT+1 óra, 44 nap)

   
Asylum - Törzstag | 5441 hsz       Online status #211402   2017.05.26 16:57 GMT+1 óra  
Azt maximum az nvidia optimus-on keresztül (ha van kivezetett api-ja)
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Elodin - Tag | 172 hsz       Online status #211401   2017.05.26 10:56 GMT+1 óra  
A kérdés az volt inkább, hogy tudom e direktbe befolyásolni, hogy melyik videokari kapja meg az outputot.

Úgy tűnik nem, a driverek nem engednek ezzel magic-elni.

   
Asylum - Törzstag | 5441 hsz       Online status #211400   2017.05.26 09:24 GMT+1 óra  
Megkérdeztem egy dx11 expert kollégát, ő is azon az állásponton van, mint én. Két vidkari van, de csak egy kimenet, szóval egyszerre nem tudod használni mind a két vidkarit (ezért nem ad vissza outputot).
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Elodin - Tag | 172 hsz       Online status #211399   2017.05.25 11:22 GMT+1 óra  
Mindkét videokari ugyanazt a monitort használja (jelen esetben a laptop screen-jét).

Ha nvidia control panel-ba állítok, vagy jobb gomb az exe-n, és futtatás grafikus processzorral gombbal indítom a játékot, akkor tudok is váltani integrált és dedikált kártya között, és minden működik faszán.

DE. Mivel a userek 90%-ának ez már gondot okoz, egyrészt szeretném megbecsülni, hogy melyik a jobb kártya, és app-on belül azt kiválasztani, másrészt ingame option menu-be választhatóvá tenni (ami nyílván restart után érvényesül).

Csakhogy: amikor a zseniális DXGI függvényeket használom, akkor jön a probléma.

Lekérem az adaptereket: IDXGIFactory::EnumAdapters().
Az első király, bármelyik is az.
A másodiknál ha lekérem az output-okat: (IDXGIAdapter::EnumOutputs) nem talál semmit.
Ez azért probléma, mert nem tudom a felbontást screen-hez igazítani, valamint nem tudom eldönteni, hogy tényleges output van e az adapterhez (mint a laptopom esetén), vagy tényleg külön fizikai kimenet van, amire nincs rákötve semmi (mint pl. ahogy te gondolod, hogy van, btw. ez az eset áll fent a PC-m esetén is.)



Edit:

1. Btw vmi magic módon el tudom indítani a pc-n is integrált kártyával a játékot, lesz vagy 6 fps-em, de vhogy átkeveredik a másik videokarin keresztül a monitorra a kép, lol

2. Feladtam a direkt controlt:
https://www.gamedev.net/topic/679029-selecting-the-actual-gpu/
Csak extern-elem a két változót. Nvidia-val teszteltem, így ha az app választhat, akkor a dedikált lesz, ha vki integráltal futtatja, akkor az. Nem a legjobb, de végülis elmegy, ha vki tudja mit csinál, tudja integráltal is futtatni ha akarja.

Ezt a hozzászólást Elodin módosította (2017.05.26 07:27 GMT+1 óra, 84 nap)

   
Asylum - Törzstag | 5441 hsz       Online status #211398   2017.05.25 10:55 GMT+1 óra  
Mert ez így nem fog működni. Az output ahogy én értelmezem maga a head, amire ha nincs monitor dugva akkor nincs output sem. Amit leírsz az akkor működik (pl. az irodai gépemen), amikor a diszkrét kártyának IS és az integrált kártyának IS van kimenete, így mindkettőre lehet dugni monitort.
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Elodin - Tag | 172 hsz       Online status #211397   2017.05.25 07:34 GMT+1 óra  
Nincs külön kimenete.
Működik is rendesen a kártya. 860m különben.

Csak a IDXGIAdapter::EnumOutputs nem talál semmit, ha a kártya nem a 0. adapter sloton van.

Ha kívülről "Futtatás grafikus processzorral"-t választok, akkor minden király.

Viszont ha NVidia van a 0-s adapter indexen, és az Intelt próbálom kiválasztani, akkor annak sincs output-ja :/

Ezt a hozzászólást Elodin módosította (2017.05.25 07:41 GMT+1 óra, 85 nap)

   
Asylum - Törzstag | 5441 hsz       Online status #211396   2017.05.24 10:20 GMT+1 óra  
Nincs felrakva ilyesmi mint az optimus vagy az amd megfelelője (sose jut eszembe a neve...).
Milyen vidkarikról van szó egyáltalán?

Egy laptopon nekem furcsának tűnik hogy két külön kimenete legyen a két vidkarinak...szerintem a külső monitorod is mindig a primary adapteren fog futni.
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Elodin - Tag | 172 hsz       Online status #211394   2017.05.24 08:57 GMT+1 óra  
Igen. (Laptop).
Ennek nem így kéne történnie ezekszerint?

   
Asylum - Törzstag | 5441 hsz       Online status #211393   2017.05.24 04:52 GMT+1 óra  
Van rádugva monitor a másik vidkarira?
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Elodin - Tag | 172 hsz       Online status #211390   2017.05.23 16:20 GMT+1 óra  
Hogy lehet normálisan implementálni a videokártya választást app-on belül?

Ki tudom listázni az adpatereket az IDXGIFactory::EnumAdapters() segítségével.

Viszont amikor az Output-okat nézem ((IDXGIAdapter::EnumOutputs)), mindig csak a 0-s adapteremnek van valid outputja.

Ha kívülről kiválasztom, hogy melyik kártyával szeretném futtatni, akkor szimplán az lesz a 0-ás index-en, és ahhoz fog tartozni az output.
Viszont ha bárhogy is próbálom nem a 0-s adapter-t használni, ahhoz nem tartozik output, és rövid úton crash lesz a vége

   
Elodin - Tag | 172 hsz       Online status #210993   2017.02.08 22:10 GMT+1 óra  
Instalok:

Valóban. Ott a pont. Kösz
Vicces, mert opencl-el szórakoztam ilyennel elég sokat vmi random egyetemi tárgy kapcsán, nem tudom miért kavarodtam most bele

   
Instalok - Tag | 532 hsz       Online status #210992   2017.02.08 22:00 GMT+1 óra  
Miért kéne másolni a textúrát?

1. kör:
A-ból olvas
B-be ír

2. kör:
A-ba ír
B-ből olvas

   
Elodin - Tag | 172 hsz       Online status #210991   2017.02.08 21:56 GMT+1 óra  
1.) -et úgy képzeled, hogy belerajzolom depth nélkül, majd újra renderelem csak a depth-et, vagy hogy?

Egyébként forward rendering van depth pass nélkül

2.) Necces, mert van egy rakat másik posteffect, meg mert akarom blur-t nyomni a transzparensekre is.

   
Asylum - Törzstag | 5441 hsz       Online status #210990   2017.02.08 20:39 GMT+1 óra  
Nem kell külön menteni, több megoldás van:
1) a transzaprenseket is belerajzolod a zbufferbe (ez jelenettől függően 2 depth pass-t jelent, szóval pazarló)
2) a transzparenseket utólag rajzolod ki a depth bufferbe (miután minden opaque effekt lefutott)
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Elodin - Tag | 172 hsz       Online status #210988   2017.02.08 20:21 GMT+1 óra  
Depth of field posteffect problémát akarom fixálni transparent object-ekre úgy, hogy elmentem a tényleges depth-et is transparent objecteknél külön.

Ping-pong-ra gondoltam én is első körben, de sajnos akkor minden írás után másolni kéne a textúrát, az pedig egy kicsit meh-nek hangzik

   
Instalok - Tag | 532 hsz       Online status #210987   2017.02.08 19:47 GMT+1 óra  
Legrosszabb esetben shaderben meg lehet csinálni. Persze ez az egész csak akkor értelmes, ha egyetlen csatornád van (pl. shadow map), mert RGB esetén hogy definiálod, hogy "az értéke nagyobb"?

Nomeg az fontos, hogy abba a textúrába írni, amiből olvasol az tudtommal undefined behaviour, szóval double-buffered textúra kell.

   
Elodin - Tag | 172 hsz       Online status #210985   2017.02.08 16:05 GMT+1 óra  
Tudok úgy írni textúrába, hogy csak akkor írjak, ha az érték amit írni akarok, nagyobb, mint az eredeti, ami benne volt?

   
Asylum - Törzstag | 5441 hsz       Online status #209643   2016.05.24 16:02 GMT+1 óra  
Kedvencem, amikor regressziós hibaként beírják, hogy ami eddig is rossz volt az most máshogy rossz (és emiatt bukik az autotest-jük). Persze, hogy máshogy rossz, újraírtuk az engine-t...
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Elodin - Tag | 172 hsz       Online status #209642   2016.05.24 14:11 GMT+1 óra  
Köszi, közben megtaláltam, mégiscsak maga a textúra volt rossz, csak nem vettem észre, mert más slot-ra került, mint gondoltam.

Nincs is jobb, mint olyan kódon dolgozni, amit már előtte éveken keresztül mások kalapáltak, főleg, ha nincs komolyabb tapasztalatom az adott technológiát illetően

És főleg, ha közben még mások is dolgoznak, tehát ha vmi múlthéten még működött, ma már nem, az nem is feltétlen az én hibám

   
Instalok - Tag | 532 hsz       Online status #209641   2016.05.24 13:47 GMT+1 óra  
Textúraformátum? Filtering? Kód?

   
Elodin - Tag | 172 hsz       Online status #209640   2016.05.24 13:17 GMT+1 óra  
Próbálok olvasni egy textúrából shaderben, de mindig 0-kat kapok.
A koordináták jók, mert másik textúrából (ugyanakkora) jól olvasok.
A bindolás jó elvileg - visual studio-ban meg tudom nézni, és az van felbindolva, aminek fel kell lennie, a képet is meg tudom nézni, azzal sincs gond.

Bármi elképzelés, hogy mi lehet a gond?

   
Instalok - Tag | 532 hsz       Online status #209607   2016.05.17 18:10 GMT+1 óra  
@syam:
Én kérek elnézést

   
Geri - Törzstag | 2186 hsz       Online status #209606   2016.05.17 16:18 GMT+1 óra  
bocs, meg mertem volna esküdni, hogy az opengl topikhoz szólok hozzá O_O
de mindegy, dx-re ugyanez vonatkozik

   
syam - Törzstag | 1491 hsz       Online status #209605   2016.05.17 16:14 GMT+1 óra  
Idézet
Instalok :
Geri, ez DirectX topic, nincs glu



Ne légy szűk látókörű

https://www.opengl.org/registry/specs/NV/DX_interop.txt
https://www.opengl.org/registry/specs/NV/DX_interop2.txt
alias aalberik
   
Instalok - Tag | 532 hsz       Online status #209604   2016.05.17 15:59 GMT+1 óra  
Geri, ez DirectX topic, nincs glu

   
Asylum - Törzstag | 5441 hsz       Online status #209603   2016.05.17 15:52 GMT+1 óra  
Geri - Törzstag | 2186 hsz       Online status #209602   2016.05.17 14:42 GMT+1 óra  
automipmapgeneration esetén - amelyet külön be lehet kapcsolni textúránként egy extension megléte esetén - automatikusan updatelődik. ellenkező esetben neked kell egyesével feltölteni, vagy a glu beépített textúrafeltöltős mipmapgenerációs hülyeségét használva f4eltölteni a textúrát.

   
Elodin - Tag | 172 hsz       Online status #209600   2016.05.17 13:05 GMT+1 óra  
Ha van egy textúrám, amibe renderelek, és annak több mipmap szintje van, akkor mi történik a szintekkel?

Mind feltöltődik értelmes értékkel automatikusan, vagy oda külön tudok írni valahogy?
Ha igen, akkor hogy?


Olyat tudok, hogy egy shaderben olvasok egy szintről, és írok egy másikra?

   
Geri - Törzstag | 2186 hsz       Online status #207373   2015.04.01 15:20 GMT+1 óra  
tökéletesen egyetértek parallaxxal. igazából annyi infó és algoritmus van ma már fent neten, hogy akár néhány napon belül is össze lehet rakni egy működőképes, a célnak megfelelő 3d enginet, ha valaki ezt akarja.

   
Parallax - Tag | 574 hsz       Online status #207353   2015.04.01 13:36 GMT+1 óra  
Nem feltétlenül igaz az, hogy több idő saját engine, mert más motornak is van egy tanulási ideje főleg, ha még sokat is tud annál bonyolultabb, míg saját engine-t az ember pontosan ismeri és tudja használni, módosítani is külön betanulási idő nélkül. Lehet hogy többet tud más engine, mert univerzálisan mindenkinek meg kell felelnie, míg saját engine-nek csak arra a pár feladatra jó, amire használom ahhoz a következő 3-4 játékhoz., amire nekem éppen kell. Viszont saját engine-nél a tanulási idő szakmailag is tapasztalatot hoz, míg más engine-nél ahol mondjuk az Unreal script megszűnt gyakorlatilag ablakon kidobott fölösleges tudás és elpazarolt idő, amit semmire nem tudok felhasználni.

   
DieToBorn - Tag | 32 hsz       Online status #207347   2015.04.01 11:02 GMT+1 óra  
Saját engine jobb is meg nem is... Jobb mert a képességei csak tőlünk függ és mert a teljes legapróbb részleteiben ismerjük.. Ellenben azért rosszabb amiért egy másik engine használata jobb.. Időt spórol vele az ember és lehet többet tud... Ugyanakkor kitudja hogy miféle algoritmusok futnak alatta és hogy az mennyire hatékony..

   
Elodin - Tag | 172 hsz       Online status #207285   2015.03.27 12:55 GMT+1 óra  
Azért elég sok cégnél van saját game engine jelenleg Valakinek azt is fejlesztenie kell

   
Parallax - Tag | 574 hsz       Online status #207282   2015.03.27 12:33 GMT+1 óra  
Már most is még szakmai körökben is egyféle underground területté vált ez és az alacsonyszintű API-kkal méginkább el fog tűnni a programozás, mindenki valami engine-t fog használni.

   
Asylum - Törzstag | 5441 hsz       Online status #207273   2015.03.27 10:20 GMT+1 óra  
DirectX 12 dokumentáció:

https://msdn.microsoft.com/en-us/library/windows/desktop/dn899121%28v=vs.85%29.aspx

Érdemes már most olvasgatni, mert ez egy teljesen új irány. Kiváncsi vagyok, hogy vajon mennyiben fogja ez érinteni a 3D grafika iránti érdeklődést (vajon tovább szűkül-e a szakma).
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Bennyg - Tag | 2 hsz       Online status #204163   2014.07.17 06:42 GMT+1 óra  
Köszönöm a segítséget. A buffer lekérés volt a hiba, hogy Dx11-esre akartam 10-est rátenni. Ez inkább olyan tanulság, hogy nem hajnali 1-kor csinálok ilyen programot .

   
fpeti - Törzstag | 1283 hsz       Online status #204157   2014.07.16 15:35 GMT+1 óra  
NINJAD!

Kipróbáltam a projektet vs2010-el, debuggolva, nálam is itt akadt el, de nem fagy (win7 alatt)
Kód:
if (FAILED(result))
{
  DXTRACE_MSG("Failed to get the swapchain backbuffer !");
  return false;
}

result = E_NOINTERFACE miatt. (ez az interface nem támogatott.)
Egyébként előtte minden jól ment, dx11 level és hardware-es driver is jó volt.
Én egyébként e szerint csináltam: rastertek, ez megy. Van benne pár extra sor a swapchain flag-eknél:
Kód:
// Set the scan line ordering and scaling to unspecified.
swapChainDesc.BufferDesc.ScanlineOrdering = DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED;
swapChainDesc.BufferDesc.Scaling = DXGI_MODE_SCALING_UNSPECIFIED;

// Discard the back buffer contents after presenting.
swapChainDesc.SwapEffect = DXGI_SWAP_EFFECT_DISCARD;

// Don't set the advanced flags.
swapChainDesc.Flags = DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH; // Alt+Enter from fullscr to windowed

De ezzel is ugyanaz van.

Na, csak rájöttem:
rossz:
Kód:
result = swapChain_->GetBuffer(0, __uuidof(ID3D10Texture2D), (LPVOID*)&backBufferTexture);

jó:
Kód:
result = swapChain_->GetBuffer(0, __uuidof(ID3D11Texture2D), (LPVOID*)&backBufferTexture);

Kipróbáltam dx10 level-el, akkor sem jó a 'ID3D10Texture2D'.
   
Asylum - Törzstag | 5441 hsz       Online status #204156   2014.07.16 15:22 GMT+1 óra  
@Bennyg: hogy fordul ez nálad egyáltalán?

Kód:
dx11demobase.cpp(64): error C2601: 'featureLevels' : local function definitions are illegal


- D3D11_CREATE_DEVICE_DEBUG nem mukodik ha nincs engedelyezve (el is szallt tole ugyh kivettem).

- ez itt miért dx10??

Kód:
result = swapChain_->GetBuffer(0, __uuidof(ID3D10Texture2D), (LPVOID*)&backBufferTexture);


kb. ennyi, ezek javítása után müködik. Btw. ezért nem szabad könyvből tanulni... -.-

szerk.: sdf és obj fájlokat ne rakd be a zipbe mert kibaszott nagyok...

Ezt a hozzászólást Asylum módosította (2014.07.16 15:31 GMT+1 óra, ---)
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Asylum - Törzstag | 5441 hsz       Online status #204155   2014.07.16 14:58 GMT+1 óra  
@Dookle: offscreen rendertargetbe renderelj, ne a backbufferrel mókolj mert szarrá hal a driver.

@NaGa: az objektumokat kirajzolod egy egyedi színnel (ami akár egy tömb index vagy pointer is lehet), és visszaolvasod a backbufferből az egér alatt.
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Bennyg - Tag | 2 hsz       Online status #204154   2014.07.16 13:04 GMT+1 óra  
Sziasztok !

Mostanában kezdtem bele én is a DirectX11 tanulásába. A példákat az alábbi könyv alapján csinálom: http://ultimategameprogramming.com/
Az alap alkalmazás jól fut és létrejön az ablak is.
Amikor összekötöm a D3D-vel az alábbi 2 kivétellel elszáll a program:

Unhandled exception at 0x76E51D4D (KernelBase.dll) in BlankD3DWindow.exe: 0x0000087D (parameters: 0x00000000, 0x00F1E20C, 0x00F1D644).
majd continue után:
Unhandled exception at 0x654F1F1E (d3d11.dll) in BlankD3DWindow.exe: 0xC0000005: Access violation reading location 0x00000001.

A csatolt fájlban ez a Dx11DemoBase.cpp
bool DX11DemoBase::Initalize(HINSTANCE hInstance, HWND hWnd) meghívásnál történik az alábbi sorban:
result = swapChain_->GetBuffer(0, __uuidof(ID3D10Texture2D), (LPVOID*)&backBufferTexture);

A példákat VS2013 Express for Windows Desktop és Windows 8.1 operációs rendszer alatt fejlesztem.

Ha valaki tud segíteni nagyon hálás lennék.
Segítséget előre is köszönöm.

A projektet itt osztottam meg:
https://onedrive.live.com/redir?resid=8E7574DABEC0E9A!1112&authkey=!APB-ww4wPOgUvl0&ithint=file%2c.zip

   
NaGa - Tag | 3 hsz       Online status #199074   2013.11.13 19:19 GMT+1 óra  
Sziasztok! A segítségeteket szeretném kérni abban,hogy hogyan lehetne több 3D Objektumból egyet egér kattintással kiválasztani? Már néztem több példát,de egyik se vált be igazán.

C# Kódrészlet:
Kód:
Vector3 near = new Vector3(mouseX, mouseY, 0);
Vector3 far = new Vector3(mouseX, mouseY, 1);
               
near.Unproject(device.Viewport, device.Transform.Projection, device.Transform.View,device.Transform.World );

far.Unprojectdevice.Viewport, device.Transform.Projection, device.Transform.View,device.Transform.World );

bool intersects = Mesh[i].Intersect(near, far, out closestIntersection);


A válaszotokat előre is köszönöm!
Valaki egyszer azt mondta:
„Programozó vagyok. Ez azt jelenti, hogy minden, amit leírok, megtörténik.”
http://nagadev.wordpress.com
   
Dookle - Tag | 478 hsz       Online status #197990   2013.10.05 21:40 GMT+1 óra  
Helló dx9 fullscreen modeban lehet valahogy a backbuffer méretet customra állítani ? Azaz valami olyan értékre amit nem támogat a grafikus kari ?
Elmondom mi a gondom : befejeztem a szép kis 2d játékomat de valahogy meg szeretném oldani hogy fullscreenben egyszerűen adaptáljam a rezolúciót külöböző felbontáshoz/ aspect ratiohoz. Szeretném elkerülni hogy több féle méretben gyártsam le a texturákat.

Tehát valami olyan megoldás kellene amivel strech-elhetem a backbuffert...
pl fullscreen resolution legyen 1920*1080 , de a backbuffer legyen 960*540

Amíg a game nincs fullscreenben addig minden oké mert ha egy 960*540-es ablakba renderelek és nyomok 1 maximize-t akkor szépen stretcheli az egész backbuffert és minden pöpecül ki van nagyítva , de fullscreen modeban ugye nincs ilyen támogatott formátum hogy 960*540...

Esetleg : Az rossz megoldás hogy fake fullscreenben futtatom ? (

Kód:
window = CreateWindowEx(
  WS_EX_TOPMOST,
  "STATIC",
  "Game",
  WS_POPUP|WS_VISIBLE |WS_VISIBLE
  ,0,0,winWidth,winHeight,
  0,0,GetModuleHandle(0),0);

// és hagyom a windowed flagot TRUE-on ?

D3DPRESENT_PARAMETERS d3dpp;

d3dpp.Windowed = TRUE;
d3dpp.BackBufferWidth = winWidth;
d3dpp.BackBufferHeight = winHeight;



Thanks előre is.

EDIT :

Sikerült a D3DSWAPEFFECT_COPY és a device->Present(sourceRect , destRect) kombinációjával megoldani...

Ezt a hozzászólást Dookle módosította (2013.10.05 22:21 GMT+1 óra, ---)
STEVIE RAY VAUGHAN FOREVER !!!!!

http://pinkcatgames.ucoz.com/
   
echo_97 - Tag | 7 hsz       Online status #196762   2013.08.14 20:41 GMT+1 óra  
rendben...
most hogy a vertexbuffer kérdése megoldódott a DX devicet kell már csak működésre bírnom (yet again)
köszi a segítséget
és a türelmet

   
Pretender - Törzstag | 2498 hsz       Online status #196756   2013.08.14 10:08 GMT+1 óra  
Lockolni / unlockolni csak egyszer kell statikus data-t. Ráadásul a vertices-t ha az initben definiáltad, akkor az a függvényhívás végére fel is szabadult...

   
echo_97 - Tag | 7 hsz       Online status #196754   2013.08.14 09:18 GMT+1 óra  
a kóddal az a baj hogy rage delete-tel megszabadultam tőle...
a tömböt amúgy []-val definiáltam (ahogy az meg volt írva)
de ha jól emlékszem akkor a kód így nézett ki:
Kód:
//Definiálom a vertex buffert
LPDIRECT3DVERTEXBUFFER9 vertexBuffer;
//....... kód itt csak a szokásos windows cucc

void initD3D(HWND hWnd)
{
       //.....itt létrehozom az objectet+ a devicet
       //......
       //megkreálom a vertexBuffert
      d3dDevice->CreateVertexBuffer(4*sizeof(CUSTOMVERTEX),
                                                                 D3DUSAGE_WRITEONLY,
                                                                 D3DFVF_CUSTOMVERTEX,
                                                                 D3DPOOL_MANAGED,
                                                                 &vertexBuffer,
                                                                 NULL)
     CUSTOMVERTEX vertices[]{
                                                        {-1.0f,-1.0f,1.0f,/*a színe*/}
                                                        {-1.0f,1.0f,1.0f,/*a színe*/}
                                                        {1.0f,1.0f.1.0f,/*a színe*/}
                                                        {1.0f,-1.0f,1.0f,/*a színe*/}
                                                        }
}

void render()
{
        CUSTOMVERTEX * pVertices
        vertexBuffer->Lock(0,sizeof(vertexBuffer),(void**)&pVertices,0)
        //ui: a 2. paramétert lehetne 0 is de nekem így könnyebben olvasható a kód
        memcpy(pVertices,vertices,sizeof(vertices));//ezt megúszhatnám azzal hogy itt helyben adom be neki  az infót de túl kényelmes vagyok
        d3dDevice->Clear(0,NULL,D3DCLEAR_TARGET,D3DCOLOR_XRBG(0,125,125),1.0f,0)
        d3dDevice->BeginScene();
                  //itt megpróbálom kirajzolni a képernyőre a vertex buffert
        d3dDevice->EndScene();
}


a kódból szándékosan kihagytam néhány nem oda való dolgot(szerintem senkit nem érdekel hogy a rózsaszín épp melyik árnyalata volt a négyzetem ),csak a problémás darabokat hagytam benne
és pluszba lehet rájöttem mi volt a hiba , a render függvényben próbáltam betölteni az adatokat és lehet azt nem szereti(mert nem dynamic flaggel volt deklarálva)

   
Pretender - Törzstag | 2498 hsz       Online status #196740   2013.08.13 21:02 GMT+1 óra  
Most akkor futásidőben vagy fordításidőben? Nagyon nem mindegy.
new-al hozod létre, vagy []-el definiáltad?

Nem azzal lesz a gond, csak a locknál száll el. Kód nélkül továbbra sem tudunk mit mondani...

   
echo_97 - Tag | 7 hsz       Online status #196736   2013.08.13 20:29 GMT+1 óra  
ahogy mondtam újra kezdtem az egészet....
és most már arra szintre jutottam hogya DirectX se inicializálódik -.-"
leellenőrzök mindent (projekt settingsbe, linkernél, kódot átnézem hogy minden ugyanaz-e mint a tutorban, stb.) de meghalt és nem tudom feléleszteni... lehet akkor megtudnám ha lehetne a DXem debug módban, amit tudok is hogy hol kell beállítani csak ki van szürkézve

ja amúgy Pretender a vertices az persze hogy futásidőben ismert(4 vertex adatait kell tartalmaznia(4*sizeof(CUSTOMVERTEX) ) ), azzal semmi baj nincs,a vertexbuffert tökéletesen megkreálja, az sem NULL, a pVerticessel meg nincs teljesem megbarátkozva mert ha void* -ra rakom akkor baja van hogy nincs inicializálva(ergo nem tudunk vele dolgozni(ahogy te mondtad)) ha meg initelem(mondjuk rádobom egy (teljesen) üres memória területre)és aztán (tudtommal érvényesen) leadom a lock függvénynek, akkor meg nem mutat rá a megfelelő helyre(i.e.: a lockolt memória területre), és még egy memory leak exceptiont is kapok szóval.....

   
Pretender - Törzstag | 2498 hsz       Online status #196485   2013.08.01 21:04 GMT+1 óra  
Amúgy a vertices változó hogy van definiálva? Az egy fordításidőben ismert méretű tömb?
A pVertices meg lehet nyugodtan void* is.
A vertexBuffer tuti nem nullpointer? Esetleg a létrehozását is be tudod másolni? (CreateVertexBuffer)

   
echo_97 - Tag | 7 hsz       Online status #196479   2013.08.01 18:16 GMT+1 óra  
hozzá teszem volt már egy működő verzióm.
csak ott nem volt a geometria látható...
elfelejtettem az alpha channelt 255-re állítani

   
echo_97 - Tag | 7 hsz       Online status #196478   2013.08.01 18:13 GMT+1 óra  
Nem csak copy pastelek(mostmár )

2 a kódban csak a hibás részt írtam le, előtte már megvolt a vertex bufferem.
amennyit kiszedtem belőle az az volt hogy a vertex buffer feltöltéséhez szügséges pointer(amit a kódban is kommenteltem) a baja, a vertex buffer éldegél csak nem lehet lockolni....
vagyis lehet de nem akarja.
amugy az egész projekt egy kicsit "messy" volt szoval inkább egy kicsit több odafigyeléssel elölről kezdem a tanulmányaim

a pointereket meg köszi, ezt a részt soha nem értettem igazán (kezdők... tut-tut)

   
Korábbi postok
> 1 < [2] [3] [4] [5] [6] [7] [8] [9] [10] [15] [20] [25] [30] [31]