Frame-based jump'n'run - not smooth, ugly tearing

Started by
6 comments, last by space_cadet 18 years, 11 months ago
Hi, for my little jump'n'run I measure the time between the last frame and the current one, then I scale each movement accordingly. Now in practice, this doesn't look very good: the movement is uneven and there is tearing. Have a look at the current game (needs DirectX9). Use the arrow keys to move. 1. Why is the movement uneven? Is this normal for frame-based games, or did I overlook something? 2. Somewhere I read it's generally more feasible for jump'n'run-type games to choose a fixed framerate (e.g. 60hz). Is this true, and why? Regards, Sebastian
Advertisement
have you been checking the results of your frame timing? All it take is an integer division in the wrong spot to really mess up your timing. Make sure that is correct first. How are you timing between frames?
moe.ron
Hmm, double-checked everything and it seems fine. I have a timer object which is called once at the very end of every frame, after rendering. The object does a QueryPerformanceCounter() and stores the time that has passed since the last call (in seconds):

float nFactor = (float)(m_nTimeNow - m_nTimeLast) / (float)m_nCountsPerSec;

That's it. All movements are multiplied by nFactor. My logfile shows a printout of nFactor:

seconds: 0.127996seconds: 0.005832seconds: 0.000941seconds: 0.000788seconds: 0.000735seconds: 0.000719seconds: 0.000927seconds: 0.001523seconds: 0.000755seconds: 0.001061seconds: 0.001577seconds: 0.000802seconds: 0.000951seconds: 0.001003seconds: 0.001109seconds: 0.001117seconds: 0.001107seconds: 0.001112seconds: 0.001108seconds: 0.001103seconds: 0.001358seconds: 0.000881seconds: 0.001138seconds: 0.001063seconds: 0.001109seconds: 0.001105seconds: 0.001107seconds: 0.001110seconds: 0.001003seconds: 0.001336seconds: 0.000902seconds: 0.001092seconds: 0.001114seconds: 0.001113seconds: 0.001107seconds: 0.001113seconds: 0.001112seconds: 0.001109seconds: 0.001119seconds: 0.001111seconds: 0.001100seconds: 0.001116seconds: 0.001109seconds: 0.001012seconds: 0.001102seconds: 0.001110seconds: 0.001112seconds: 0.001275seconds: 0.000957seconds: 0.001103seconds: 0.001111seconds: 0.001110seconds: 0.001112seconds: 0.001109seconds: 0.001112seconds: 0.001114seconds: 0.001114seconds: 0.001107seconds: 0.001043seconds: 0.001112seconds: 0.001119seconds: 0.001106seconds: 0.001110seconds: 0.001112seconds: 0.001107seconds: 0.001258seconds: 0.000972seconds: 0.001107seconds: 0.001112seconds: 0.001107seconds: 0.001113seconds: 0.001115seconds: 0.001108seconds: 0.001069seconds: 0.001114seconds: 0.001109seconds: 0.001105seconds: 0.001110seconds: 0.001111seconds: 0.001112seconds: 0.001110seconds: 0.001111seconds: 0.001112seconds: 0.001273seconds: 0.000972seconds: 0.001104seconds: 0.001111seconds: 0.001120seconds: 0.001074seconds: 0.001108seconds: 0.001113seconds: 0.001113seconds: 0.001251seconds: 0.000990seconds: 0.001108seconds: 0.001110seconds: 0.001109seconds: 0.001118seconds: 0.001108seconds: 0.001112seconds: 0.001107seconds: 0.001307seconds: 0.000940seconds: 0.001081seconds: 0.001111seconds: 0.001105seconds: 0.001109seconds: 0.001114seconds: 0.001113seconds: 0.001114seconds: 0.001191seconds: 0.001043seconds: 0.001106seconds: 0.001115seconds: 0.001117seconds: 0.001112seconds: 0.001115seconds: 0.001115seconds: 0.001088seconds: 0.001276seconds: 0.000969seconds: 0.001110seconds: 0.001114seconds: 0.001115seconds: 0.001115seconds: 0.001120seconds: 0.001109seconds: 0.001114seconds: 0.001492seconds: 0.000970seconds: 0.000900seconds: 0.001112seconds: 0.001107seconds: 0.001082seconds: 0.001116seconds: 0.001110seconds: 0.001113seconds: 0.001305seconds: 0.000931seconds: 0.001109seconds: 0.001114seconds: 0.001117seconds: 0.001116seconds: 0.001113seconds: 0.001113seconds: 0.001115seconds: 0.001122seconds: 0.001296seconds: 0.000896seconds: 0.001112seconds: 0.001117seconds: 0.001118seconds: 0.001114seconds: 0.001115seconds: 0.001116seconds: 0.001271seconds: 0.000975seconds: 0.001111seconds: 0.001113seconds: 0.001106seconds: 0.001114seconds: 0.001112seconds: 0.001115seconds: 0.001082seconds: 0.001135seconds: 0.001108seconds: 0.001114seconds: 0.001114seconds: 0.001112seconds: 0.001110seconds: 0.001111seconds: 0.001117seconds: 0.001113seconds: 0.001282seconds: 0.000964seconds: 0.001115seconds: 0.001120seconds: 0.001111seconds: 0.001071seconds: 0.001121seconds: 0.001116seconds: 0.001124seconds: 0.001183seconds: 0.001057seconds: 0.001119seconds: 0.001112seconds: 0.001114seconds: 0.001114seconds: 0.001110seconds: 0.001107seconds: 0.001116seconds: 0.001295seconds: 0.000955seconds: 0.001061seconds: 0.001112seconds: 0.001115seconds: 0.001109seconds: 0.001110seconds: 0.001114seconds: 0.001115seconds: 0.001133seconds: 0.001111seconds: 0.001113seconds: 0.001115seconds: 0.001111seconds: 0.001105seconds: 0.001110seconds: 0.001116seconds: 0.001072seconds: 0.001346seconds: 0.000929seconds: 0.001074seconds: 0.001116seconds: 0.001111seconds: 0.001109seconds: 0.001113seconds: 0.001112seconds: 0.001112seconds: 0.001126seconds: 0.001108seconds: 0.001108seconds: 0.001116seconds: 0.001110seconds: 0.001074seconds: 0.001112seconds: 0.001116seconds: 0.001109seconds: 0.001276seconds: 0.000953seconds: 0.001107seconds: 0.001104seconds: 0.001116seconds: 0.001111seconds: 0.001113seconds: 0.001104seconds: 0.001109seconds: 0.001118seconds: 0.001113seconds: 0.001087seconds: 0.001103seconds: 0.001110seconds: 0.001109seconds: 0.001112seconds: 0.001111seconds: 0.001107seconds: 0.001300seconds: 0.000929seconds: 0.001106seconds: 0.001113seconds: 0.001115seconds: 0.001103seconds: 0.001115seconds: 0.001112seconds: 0.001103seconds: 0.001110seconds: 0.001105seconds: 0.001107seconds: 0.001114seconds: 0.001112seconds: 0.001113seconds: 0.001109seconds: 0.001111seconds: 0.001107seconds: 0.001247seconds: 0.000964seconds: 0.001108seconds: 0.001110seconds: 0.001098seconds: 0.001100seconds: 0.001103seconds: 0.001101seconds: 0.001107seconds: 0.001224seconds: 0.000999seconds: 0.001099seconds: 0.001105seconds: 0.001100seconds: 0.001109seconds: 0.001107seconds: 0.001099seconds: 0.001107seconds: 0.001388seconds: 0.000924seconds: 0.000986seconds: 0.001103seconds: 0.001097seconds: 0.001105seconds: 0.001099seconds: 0.001098seconds: 0.001109seconds: 0.001332seconds: 0.000932seconds: 0.001066seconds: 0.001093seconds: 0.001100seconds: 0.001103seconds: 0.001105seconds: 0.001091seconds: 0.001082seconds: 0.001036seconds: 0.005179seconds: 0.000750seconds: 0.000725seconds: 0.000730seconds: 0.000934seconds: 0.001098seconds: 0.001103seconds: 0.001093seconds: 0.001092seconds: 0.001095seconds: 0.001094seconds: 0.001091seconds: 0.001094seconds: 0.001099seconds: 0.001091seconds: 0.001316seconds: 0.000924seconds: 0.001049seconds: 0.001095seconds: 0.001093seconds: 0.001100seconds: 0.001093seconds: 0.001092seconds: 0.001094seconds: 0.001294seconds: 0.000928seconds: 0.001061seconds: 0.001055seconds: 0.001138seconds: 0.001041seconds: 0.001091seconds: 0.001092seconds: 0.001094seconds: 0.001086seconds: 0.001414seconds: 0.000812seconds: 0.001057seconds: 0.001098seconds: 0.001090seconds: 0.001089seconds: 0.001088seconds: 0.001089seconds: 0.000982seconds: 0.001100seconds: 0.001089seconds: 0.001097seconds: 0.001098seconds: 0.001093seconds: 0.001099seconds: 0.001090seconds: 0.001101seconds: 0.001095seconds: 0.001276seconds: 0.000939seconds: 0.001089seconds: 0.001091seconds: 0.001097seconds: 0.001047seconds: 0.001097seconds: 0.001097seconds: 0.001092seconds: 0.009436seconds: 0.000825seconds: 0.001543seconds: 0.000816seconds: 0.000798seconds: 0.000826seconds: 0.000733seconds: 0.000870seconds: 0.001106seconds: 0.001095seconds: 0.001101seconds: 0.001466seconds: 0.001247seconds: 0.000784seconds: 0.001423seconds: 0.000743seconds: 0.000987seconds: 0.001096seconds: 0.001106seconds: 0.001099seconds: 0.001128seconds: 0.001555seconds: 0.000832seconds: 0.001389seconds: 0.000747seconds: 0.000921seconds: 0.001112seconds: 0.001110seconds: 0.001100seconds: 0.001107seconds: 0.002110seconds: 0.000896seconds: 0.000826seconds: 0.000732seconds: 0.000992seconds: 0.001078seconds: 0.001105seconds: 0.001102seconds: 0.001112seconds: 0.001263seconds: 0.000963seconds: 0.001106seconds: 0.001114seconds: 0.001115seconds: 0.001108seconds: 0.001108seconds: 0.001115seconds: 0.001111seconds: 0.001123seconds: 0.001100seconds: 0.001095seconds: 0.001108seconds: 0.001116seconds: 0.001108seconds: 0.001114seconds: 0.001108seconds: 0.001114seconds: 0.001302seconds: 0.000927seconds: 0.001106seconds: 0.001112seconds: 0.001109seconds: 0.001114seconds: 0.001111seconds: 0.001109seconds: 0.001103seconds: 0.001206seconds: 0.001024seconds: 0.001112seconds: 0.001112seconds: 0.001109seconds: 0.001110seconds: 0.001114seconds: 0.001110seconds: 0.001111seconds: 0.001328seconds: 0.000933seconds: 0.001095seconds: 0.001126seconds: 0.001112seconds: 0.001109seconds: 0.001117seconds: 0.001118seconds: 0.001198seconds: 0.001209seconds: 0.000962seconds: 0.001116seconds: 0.001121seconds: 0.001114seconds: 0.001125seconds: 0.001128seconds: 0.001124seconds: 0.001119seconds: 0.001223seconds: 0.001055seconds: 0.001068seconds: 0.001135seconds: 0.001131seconds: 0.001132seconds: 0.001135seconds: 0.001127seconds: 0.001135seconds: 0.001146seconds: 0.001134seconds: 0.001140seconds: 0.001131seconds: 0.001140seconds: 0.001132seconds: 0.001137seconds: 0.001139seconds: 0.001027seconds: 0.001368seconds: 0.000911seconds: 0.001141seconds: 0.001133seconds: 0.001139seconds: 0.001144seconds: 0.001140seconds: 0.001137seconds: 0.001136seconds: 0.001213seconds: 0.001068seconds: 0.001144seconds: 0.001143seconds: 0.001129seconds: 0.001073seconds: 0.001131seconds: 0.001143seconds: 0.001141seconds: 0.001426seconds: 0.000861seconds: 0.001137seconds: 0.001145seconds: 0.001143seconds: 0.001143seconds: 0.001143seconds: 0.001143seconds: 0.001251seconds: 0.001050seconds: 0.001130seconds: 0.001139seconds: 0.001140seconds: 0.001143seconds: 0.001141seconds: 0.001144seconds: 0.001142seconds: 0.001390seconds: 0.000895seconds: 0.001141seconds: 0.001144seconds: 0.001144seconds: 0.001144seconds: 0.001140seconds: 0.001145seconds: 0.001166seconds: 0.001233seconds: 0.000933seconds: 0.001143seconds: 0.001143seconds: 0.001143seconds: 0.001141seconds: 0.001146seconds: 0.001140seconds: 0.001140seconds: 0.001428seconds: 0.000875seconds: 0.001140seconds: 0.001140seconds: 0.001127seconds: 0.001100seconds: 0.001140seconds: 0.001145seconds: 0.001556seconds: 0.000909seconds: 0.000962seconds: 0.001145seconds: 0.001143seconds: 0.001140seconds: 0.001145seconds: 0.001139seconds: 0.001143seconds: 0.001409seconds: 0.001096seconds: 0.000907seconds: 0.001142seconds: 0.001142seconds: 0.001142seconds: 0.001143seconds: 0.001140seconds: 0.001145seconds: 0.001260seconds: 0.001027seconds: 0.001144seconds: 0.001141seconds: 0.001139seconds: 0.001147seconds: 0.001139seconds: 0.001143seconds: 0.001041seconds: 0.001386seconds: 0.000910seconds: 0.001140seconds: 0.001139seconds: 0.001143seconds: 0.001144seconds: 0.001141seconds: 0.001142seconds: 0.001145seconds: 0.001328seconds: 0.000971seconds: 0.001142seconds: 0.001146seconds: 0.001119seconds: 0.001129seconds: 0.001149seconds: 0.001146seconds: 0.001707seconds: 0.000814seconds: 0.000933seconds: 0.001140seconds: 0.001144seconds: 0.001140seconds: 0.001146seconds: 0.001144seconds: 0.001147seconds: 0.001160seconds: 0.001134seconds: 0.001071seconds: 0.001146seconds: 0.001144seconds: 0.001141seconds: 0.001140seconds: 0.001148seconds: 0.001141seconds: 0.001394seconds: 0.000892seconds: 0.001145seconds: 0.001143seconds: 0.001143seconds: 0.001146seconds: 0.001149seconds: 0.001143seconds: 0.001036seconds: 0.001187seconds: 0.001110seconds: 0.001145seconds: 0.001141seconds: 0.001143seconds: 0.001145seconds: 0.001152seconds: 0.001143seconds: 0.001143seconds: 0.001454seconds: 0.000848seconds: 0.001148seconds: 0.001155seconds: 0.001129seconds: 0.001152seconds: 0.001141seconds: 0.001147seconds: 0.001449seconds: 0.000867seconds: 0.001146seconds: 0.001154seconds: 0.001144seconds: 0.001143seconds: 0.001142seconds: 0.001142seconds: 0.001145seconds: 0.001498seconds: 0.000815seconds: 0.001018seconds: 0.001141seconds: 0.001143seconds: 0.001145seconds: 0.001137seconds: 0.001142seconds: 0.001142seconds: 0.001246seconds: 0.001043seconds: 0.001143seconds: 0.001146seconds: 0.001139seconds: 0.001142seconds: 0.001141seconds: 0.001132seconds: 0.001064seconds: 0.001311seconds: 0.000988seconds: 0.001143seconds: 0.001141seconds: 0.001143seconds: 0.001136seconds: 0.001141seconds: 0.001141seconds: 0.001545seconds: 0.000750seconds: 0.001143seconds: 0.001134seconds: 0.001141seconds: 0.001138seconds: 0.001148seconds: 0.001144seconds: 0.001144seconds: 0.001496seconds: 0.000805seconds: 0.001142seconds: 0.001198seconds: 0.001090seconds: 0.001142seconds: 0.001140seconds: 0.001141seconds: 0.001145seconds: 0.001154seconds: 0.001137seconds: 0.001044seconds: 0.001144seconds: 0.001143seconds: 0.001143seconds: 0.001147seconds: 0.001148seconds: 0.001143seconds: 0.001269seconds: 0.001030seconds: 0.001144seconds: 0.001144seconds: 0.001141seconds: 0.001142seconds: 0.001144seconds: 0.001118seconds: 0.001112seconds: 0.001159seconds: 0.001148seconds: 0.001145seconds: 0.001149seconds: 0.001151seconds: 0.001146seconds: 0.001154seconds: 0.001141seconds: 0.001623seconds: 0.000698seconds: 0.001126seconds: 0.001154seconds: 0.001141seconds: 0.001083seconds: 0.001144seconds: 0.001143seconds: 0.001146seconds: 0.001171seconds: 0.001126seconds: 0.001149seconds: 0.001148seconds: 0.001145seconds: 0.001141seconds: 0.001144seconds: 0.001143seconds: 0.001146seconds: 0.001286seconds: 0.001024seconds: 0.001036seconds: 0.001144seconds: 0.001140seconds: 0.001144seconds: 0.001149seconds: 0.001146seconds: 0.001147seconds: 0.001151seconds: 0.001146seconds: 0.001145seconds: 0.001143seconds: 0.001142seconds: 0.001146seconds: 0.001155seconds: 0.001134seconds: 0.001769seconds: 0.000694seconds: 0.001002seconds: 0.001146seconds: 0.001144seconds: 0.001155seconds: 0.001146seconds: 0.001152seconds: 0.001148seconds: 0.006138seconds: 0.000707seconds: 0.000592seconds: 0.000747seconds: 0.001158seconds: 0.001159seconds: 0.001345seconds: 0.000970seconds: 0.001159seconds: 0.001157seconds: 0.001147seconds: 0.001153seconds: 0.001146seconds: 0.001150seconds: 0.001471seconds: 0.000833seconds: 0.001131seconds: 0.001150seconds: 0.001141seconds: 0.001147seconds: 0.001147seconds: 0.001148seconds: 0.001147seconds: 0.001400seconds: 0.000904seconds: 0.001153seconds: 0.002619seconds: 0.000749seconds: 0.000719seconds: 0.000723seconds: 0.001109seconds: 0.001086seconds: 0.001197seconds: 0.001121seconds: 0.001156seconds: 0.001160seconds: 0.001155seconds: 0.001162seconds: 0.001155seconds: 0.001159seconds: 0.002180seconds: 0.000962seconds: 0.000751seconds: 0.000769seconds: 0.001119seconds: 0.001078seconds: 0.001148seconds: 0.001143seconds: 0.001141seconds: 0.001925seconds: 0.000822seconds: 0.000741seconds: 0.001127seconds: 0.001149seconds: 0.001159seconds: 0.001155seconds: 0.001146seconds: 0.001149seconds: 0.001453seconds: 0.000850seconds: 0.001059seconds: 0.001151seconds: 0.001145seconds: 0.001153seconds: 0.001148seconds: 0.001155seconds: 0.001152seconds: 0.001235seconds: 0.001067seconds: 0.001145seconds: 0.001682seconds: 0.000824seconds: 0.000938seconds: 0.001141seconds: 0.001134seconds: 0.001892seconds: 0.000816seconds: 0.000748seconds: 0.001151seconds: 0.001145seconds: 0.001146seconds: 0.001156seconds: 0.001154seconds: 0.001150seconds: 0.001195seconds: 0.001105seconds: 0.001152seconds: 0.001146seconds: 0.001158seconds: 0.001041seconds: 0.001148seconds: 0.001149seconds: 0.001153seconds: 0.001447seconds: 0.000855seconds: 0.001146seconds: 0.001147seconds: 0.001140seconds: 0.001141seconds: 0.001141seconds: 0.001146seconds: 0.001255seconds: 0.001109seconds: 0.001058seconds: 0.001206seconds: 0.001086seconds: 0.001139seconds: 0.001153seconds: 0.001152seconds: 0.001148seconds: 0.001571seconds: 0.000816seconds: 0.001099seconds: 0.001147seconds: 0.001152seconds: 0.001147seconds: 0.001153seconds: 0.001149seconds: 0.001049seconds: 0.001346seconds: 0.000968seconds: 0.001141seconds: 0.001145seconds: 0.001152seconds: 0.001143seconds: 0.001144seconds: 0.001145seconds: 0.001152seconds: 0.001432seconds: 0.000874seconds: 0.001144seconds: 0.001158seconds: 0.001119seconds: 0.001114seconds: 0.001147seconds: 0.001150seconds: 0.001176seconds: 0.001142seconds: 0.001148seconds: 0.001159seconds: 0.001160seconds: 0.001154seconds: 0.001150seconds: 0.001155seconds: 0.001153seconds: 0.001459seconds: 0.000867seconds: 0.001065seconds: 0.001146seconds: 0.001148seconds: 0.001151seconds: 0.001151seconds: 0.001147seconds: 0.001142seconds: 0.001201seconds: 0.001098seconds: 0.001143seconds: 0.001143seconds: 0.001147seconds: 0.001146seconds: 0.001154seconds: 0.001141seconds: 0.001074seconds: 0.001521seconds: 0.000792seconds: 0.001159seconds: 0.001157seconds: 0.001158seconds: 0.001157seconds: 0.001158seconds: 0.001159seconds: 0.001452seconds: 0.000868seconds: 0.001155seconds: 0.001158seconds: 0.001155seconds: 0.001097seconds: 0.001158seconds: 0.001157seconds: 0.001157seconds: 0.001447seconds: 0.000858seconds: 0.001154seconds: 0.001149seconds: 0.001148seconds: 0.001144seconds: 0.001147seconds: 0.001158seconds: 0.001152seconds: 0.001227seconds: 0.001083seconds: 0.001076seconds: 0.001159seconds: 0.001159seconds: 0.001157seconds: 0.001160seconds: 0.001157seconds: 0.001162seconds: 0.001385seconds: 0.000927seconds: 0.001157seconds: 0.001159seconds: 0.001156seconds: 0.001154seconds: 0.001149seconds: 0.001094seconds: 0.001296seconds: 0.001015seconds: 0.001145seconds: 0.001152seconds: 0.001144seconds: 0.001152seconds: 0.001150seconds: 0.001151seconds: 0.001150seconds: 0.001517seconds: 0.000812seconds: 0.001155seconds: 0.001153seconds: 0.001159seconds: 0.001085seconds: 0.001154seconds: 0.001155seconds: 0.001176seconds: 0.001154seconds: 0.001154seconds: 0.001155seconds: 0.001154seconds: 0.001161seconds: 0.001154seconds: 0.001157seconds: 0.001158seconds: 0.001621seconds: 0.000885seconds: 0.000903seconds: 0.001149seconds: 0.001154seconds: 0.001156seconds: 0.001157seconds: 0.001148seconds: 0.001153seconds: 0.001264seconds: 0.001051seconds: 0.001163seconds: 0.001160seconds: 0.001154seconds: 0.001162seconds: 0.001159seconds: 0.001146seconds: 0.001164seconds: 0.001508seconds: 0.000862seconds: 0.001035seconds: 0.001155seconds: 0.001159seconds: 0.001156seconds: 0.001161seconds: 0.001152seconds: 0.001468
I've done some more testing and I thing DirectX' Present() method has something to do with it. I've posted the details here...
Can't see any tearing or uneven movement...
Maybe that's because the framerate (? <- number in the upper right corner) is >> 1000.
Yeah seemed fine for me. Frame Rate (number in top right) was around 5k, if that helps.

Maybe post an image of the tearing.

Matt Hughson
__________________________________[ Website ] [ Résumé ] [ [email=contact[at]matthughson[dot]com]Contact[/email] ][ Have I been Helpful? Hook me up! ]
Out of curiousity, give us some info on how you are drawing your objects. Are you using VertexBuffers? If so, are they dynamic? Static? Are you locking them every frame? What's your lock call look like? Oh, and of course, are you using C++? Or maybe a managed language like C#. My first guess would be it has something to do with garbage collection, perhaps in combination with locking VBs, just cuz I had the same problem before.

--Vic--
First of all, thank you for your interest. To show the problem more clearly, I've compiled a demo that sets D3DPRESENT_INTERVAL_ONE, and thus limits the framerate the to system's VSYNC rate (e.g. 60Hz on my system). At least on my laptop, the sprites even seem to jump back and forth. I'd be interested to hear how it runs on other systems. You can download it here... Try moving around the character with the arrow keys, you'll see what I mean.

I'm using DirectX 9.0c SDK, C++, and I'm using textured quads to render the 2D content. I am using one dynamic vertex buffer, and I lock the buffer each frame. The code snippet below shows the relevant bits.


// init phase:// setup fullscreen parameters//m_pd3dppf = new D3DPRESENT_PARAMETERS;ZeroMemory(m_pd3dppf, sizeof(D3DPRESENT_PARAMETERS));m_pd3dppf->Windowed = false;m_pd3dppf->SwapEffect = D3DSWAPEFFECT_DISCARD;m_pd3dppf->PresentationInterval = D3DPRESENT_INTERVAL_ONE;m_pd3dppf->BackBufferWidth = nWidth;m_pd3dppf->BackBufferHeight = nHeight;m_pd3dppf->BackBufferCount = 1;m_pd3dppf->BackBufferFormat = d3ddm.Format;// create Direct3D device//hr = m_pd3d->CreateDevice(	D3DADAPTER_DEFAULT, 	D3DDEVTYPE_HAL,	hWnd,	D3DCREATE_HARDWARE_VERTEXPROCESSING,	m_pd3dppf,	&m_pd3dd);// create the vertex buffer//hr = m_pd3dd->CreateVertexBuffer(	nPanelCnt * CPanel::VERTEX_COUNT * CPanel::VERTEX_SIZE,	D3DUSAGE_WRITEONLY | D3DUSAGE_DYNAMIC,	D3DFVF_XYZ | D3DFVF_TEX1, 	D3DPOOL_DEFAULT,	&m_pVB,	NULL);// each frame:// check if dynamic VB is full //int nFlags;if (m_nVBOffset + nPanelCnt > m_nVBSize){	// lock new VB, discard old	//	nFlags = D3DLOCK_DISCARD;	m_nVBOffset = 0;}else{	// lock unused part of VB	//	nFlags = D3DLOCK_NOOVERWRITE;}// lock VB//hr = m_pVB->Lock(	m_nVBOffset * CPanel::VERTEX_COUNT * CPanel::VERTEX_SIZE,	nPanelCnt * CPanel::VERTEX_COUNT * CPanel::VERTEX_SIZE,	(VOID **)ppVer,	nFlags);// draw VB//hr = m_pd3dd->DrawPrimitive(	D3DPT_TRIANGLELIST,	m_nVBOffset * CPanel::VERTEX_COUNT,	nPanelCnt * CPanel::PRIMITIVE_COUNT);// unlock VB//hr = m_pVB->Unlock();// advance VB offset//m_nVBOffset += nPanelCnt;


[Edited by - space_cadet on May 15, 2005 6:44:52 AM]

This topic is closed to new replies.

Advertisement