• Content count

  • Joined

  • Last visited

Community Reputation

473 Neutral

About fanaticlatic

  • Rank

Personal Information

  1. Weird Graphics Bug

    As others have said this looks like uv coordinates are wrong. You want to map the whole texture to the rectangle correct?   Assuming your rendering as triangle strips try implementing the following pseudocode:   vert 1.texcoord = 0,0 vert 2.texcoord = 0,1 vert 3.texcoord = 1,1 vert 4.texcoord = 1,0   If that doesn't work try shifting the coords between the different verts, one combination should work for you.     Good luck.
  2. I believe your onUpdate in TruckArrive needs to be Virtual:   virtual bool OnUpdate(float seconds);
  3. Single Frame Multiple Monitor rendering

    Solved: Turns out it was a driver issue! updated to the latest AMD Catalyst driver for my 3450 card and hey presto it works.
  4. Hi all,   Has anyone had any issues with multi-monitor rendering with directx on the ATi 3450 GPU?   I am seeing hresults S_OK for all my device creates and presents etc.   With the reference device I see Both screens rendered correctly in borderless window mode i.e. non-exclusive.   With the hardware device I see a single frame where both views show correctly on each monitor then on subsequent present calls only the primary monitor is shown the other screen is Black.   The interesting thing is Pix is showing both my screens rendered correctly from its viewer after I profiled the rendering every 6 frames. So I'm definitely drawing correctly I just don't understand why I would see the first frame correctly then output black subsequently.   I'm using directx 9.0c from the February 2005 SDK.    My next steps are to try the code on a friends pc with a different GPU and hope it works, If anyone has any ideas what I could do to track this tricky issue down I'd appreciate it.     Thanks in advance.   Hinchy.
  5. directx will only vsync in fullscreen exclusive mode. So your windowed mode must be false for all your swapchains. Search fullscreen exclusive mode on MSDN should take you through it step by step.   Good luck.
  6. Graphical Tearing under rotation

    I believe we have a fix for this issue. It seems there is a blocking call in the engine code that was handled without issue on the original higher spec'd pc but creates a stutter on the test pc. It's this stutter over multiple frames that seems to cause the tearing on our wheel. Thanks for the help everyone.
  7. Graphical Tearing under rotation

    [quote name='Steve_Segreto' timestamp='1355168573' post='5009168'] I've noticed if you try for 60hz your delta time between frames is not always EXACTLY 0.016666666667f (many times not even within an epsilon of it), which isn't surprising as Windows makes no claim to be a real-time operating system. One suggestion is to rotate the wheel by a number of degrees (or radians) that accounts for the delta time between this frame and last frame (i.e. multiply your rotation strength by delta time). [/quote] Yes the windows timings will be out possibly by quite a margin as you say, but when you think about it that would make sense hence why I should be receiving a v-sync message that will cause the graphics system to flip its buffers so the actual frame timings shouldn't affect it. Your suggestion about updating the wheel based on time (which is how it should have been done in the first place to be honest!) is a good one, and something I shall be implementing on the next test. Thanks for the help. [quote name='L. Spiro' timestamp='1355196226' post='5009290'] The control panel for your graphics cards is probably set to override v-sync. Check it. You can also print the FPS easily enough to the console once every second. That would be an easy way to determine what is happening. L. Spiro [/quote] Yes the v-sync being overridden was one of my first thoughts and unfortunately that does not seem to be the case, at least I couldn't find any setting that might affect it. I did try a couple of tests with forced triple buffering, anisotropic filtering turned on and off etc. all to no avail. I should say the system only has the onboard graphics, hence why the only thing on screen pretty much is a textured quad that is being rotated. As for the FPS, our engine has the ability to display the FPS but perhaps that is giving me some false positives. I shall try forcing the FPS overlay of the directx device on it. I think that still works even using the release directx libraries. Thanks for your thoughts folks. Mark.
  8. Hi all, Has anyone encountered a tearing issue under rotation? If so could you share your thoughts on this. I am having a screen tearing issue when v-syncing is ON??? By on I mean the presentation interval is set to ONE rather than IMMEDIATE; and the HResult from the creation is S_OK. My thinking now is either the driver is overriding my games settings or there is a trick of the eye going on during the rotation. To set the scene, I have a single circular wheel on screen rotating repeatedly about it's centre 360 degrees, this wheel covers most of the screen. The tearing appears near the bottom and top of this wheel. I am not clearing the screen just rendering over the backbuffer. I have ran some tests originally designed to simplify the application. This meant increasing the rotation delta between frames e.g. rather than rotating 1 degree per frame we rotate 180 degree per frame. Surprisingly this seems to stop the tearing from appearing? We also tried the delta at 90, and 45 degrees and there was no tearing! Thanks in advance, Mark.
  9. Hi all, I am wondering what the best practice is for placing a series of bits and bytes read in from a file/external source into a packed structure. For example the program header from an mpeg stream: [CODE] 00 00 01 BA 7F FF FF 8A D4 01 86 66 CF F8 [/CODE] Should fill these variables in my packed structure: [CODE] uint32 sync_bytes; unsigned mask1 : 2; unsigned system_clock_ref1 : 3; unsigned mask2 : 1; unsigned system_clock_ref2 : 15; unsigned mask3 : 1; unsigned system_clock_ref3 : 15; unsigned mask4 : 1; unsigned system_ext : 9; unsigned mask5 : 1; unsigned mux_rate : 22; unsigned mask6 : 2; unsigned reserved : 5; unsigned stuffing_length : 3; [/CODE] The masks should be like the purple values shown here: [url=""][/url] I think I am going wrong with the endianness of the system. I have also thought about serialisation of the data and literally stepping through each bit, this seems overly cautious and slow. I'd be happy to hear any thoughts on this. Thanks in advance. hinchy
  10. [quote name='MJP' timestamp='1349805836' post='4988421'] Why exactly do you want the earliest SDK that supports it? [/quote] I want to prevent migrating too far away from the February 2005 sdk that I am currently using if at all possible. As it could well end up a series of retrospective fixes to patch up the current engine to the potentially more recent directx sdk. Basically I would consider a jump to August 2007 sdk less risky than a jump to the latest sdk for example. [quote name='Erik Rufelt' timestamp='1349828601' post='4988544'] I doubt you can share resources between different physical GPUs.. I believe the devices must share the underlying adapter. Please correct me if I'm wrong. [/quote] Providing the gpu utilises the same device driver then its possible, this means they have to be from the same family of card so no NVidia/Ati combinations. At least on opengl using wglsharelists. The sharelists basically drops a copy onto each gpu adapters memory so when the RAM copy is changed this is reflected in the GPU copies. Thats my understanding anyway.
  11. Thanks for the response mhagain. Firstly great shout about swap chains and normally this is what I would do in a single device system. However, I am looking at a multi-monitor multi-device system to make use of dual/quad graphics cards and am therefore rendering in fullscreen mode. This means I need to share resources between devices. So any help on locating the earliest sdk that opened up the extended device functionality would be awesome. Thanks again. MarkH.
  12. Hello all, I am having some trouble finding similiar functionality to Opengl's wglShareLists in Direct3D using the February 2005 sdk (old I know). I have only found the Create functions (like CreateTexture) take a Handle pointer, which when (pointer != NULL) && (*pointer == NULL) should set the (*pointer) value. This handle value is then used on subsequent CreateTexture calls from other devices to share that texture across those devices. This functionality is OS dependant requiring Vista or above to create a texture and return a value to the handle pointer. On XP the return from CreateTexture is E_NOTIMPL when sending anything in the HANDLE parameter other than NULL, this is expected and documented. It is unexpected to receive an error on Windows 7, which is what I am currently seeing! From what I have read the CreateTexture call must come from an IDirect3DDevice9EX interface rather than the standard IDirect3DDevice9 interface. This would explain why the windows 7 unexpectedly fails as we currently create texture using vanilla IDIRECT3DDEVICE9 pointer. Unfortunately the February 2005 sdk does not expose the extended device, at least not in the d3dx9.h header I have. I cannot find the directx 9 sdk that first provided these objects and nothing on the MSDN docs seems to point me in the right direction. Any help on locating the SDK that exposes the functionality I require would be greatly appreciated. Thanks in advance, MarkH.
  13. Assembly confusion

    Hi, Thanks for the response. [quote name='kd7tck' timestamp='1347610580' post='4979996'] Are you first compiling to assembly from C? The reason I ask is because [CODE]static const unsigned short CoefficientsRGBU[256][4] = {[/CODE] is not assembly. [/quote] Well it's C++ with the function wrapped in an extern "C" {} scope. The function contains inline assembley statement __asm{} all compiled/written with the VS2005 IDE. The lookup tables are defined within the extern "C" scope. [quote name='kd7tck' timestamp='1347610580' post='4979996'] This is only a hunch I got, so stay with me here. Convert the following code in C with -S first. [CODE] static const unsigned short CoefficientsRGBU[256][4] = { {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0},... {14465, 62734, 0, 0}, {14465, 62734, 0, 0}, {14465, 62734, 0, 0}, {14465, 62734, 0, 0}}; [/CODE] Then modify the output, add the following to the end. [CODE]movq mm0, [ (_CoefficientsRGBU_ + offset) + 8 * eax ][/CODE] If I am totally off base with this hunch then please post back with more info. [/quote] -S is a GCC compile flag I believe, so won't be much use for me with VS 2005 and the Microsoft C/C++ compiler. There may be something in the underscored name of the lookup table as that's the way the assembly converter must be called when the converter is not inlined but the function is provided in a seperate .asm file. I'll have another play around and if anything drops I shall post back here. Thanks again and if anyone else can shed more light on this I will be grateful. MarkH.
  14. Hi all, I am having trouble understanding why a movq instruction is putting NULL in mm0 when trying to set the source operand of the instruction using a look up table? I already posted the question here on daniweb as it's got a specific assembly forum: If anyone can provide any help here though I would be grateful as I am totally stumped at the minute. Thanks in advance, MarkH.
  15. Hi all, Solved the problem. By defaut VS Express sets the Core libs output directory to be "$(SolutionDir)$(Configuration)\" but as my solution is stored in the demo project it meant all the source linkage was not being picked up! Changing the output directory for all libraries to "$(ProjectDir)$(Configuration)\" got me up and running Thanks all.