DirectX Render Limit?

Started by
18 comments, last by inzombiak 10 years ago

Do you have access to either PIX or the Graphics Debugger? If so, it will tell you what your program is submitting to the API, which will likely lead you to the root of the problem. Take a frame grab before and after it stops rendering, and examine what is being sent by your app. If you stop rendering without any errors, then you are probably either not submitting anything to draw (i.e. like the others have said, probably an application problem) or you don't have the D3D11 debug device enabled...

Advertisement

Uh, I'm using VS 2013 Express, but I think it has the Graphics Debugger. I'll try it when I get home.
What do you mean by "application problem"? I'm just confused as to what the number 100 has to do with anything.

Thanks for the help guys.

VS2013 Express for Desktop doesn't support the Graphics Debugger.

As mentioned above, it's likely your problem has nothing to do with D3D itself, though you may be passing invalid or incorrect parameters to one or more D3D functions. You do some error checking in your code but you do not announce all of them. How do you announce the others?

Please don't PM me with questions. Post them in the forums for everyone's benefit, and I can embarrass myself publicly.

You don't forget how to play when you grow old; you grow old when you forget how to play.

VS2013 Express for Desktop doesn't support the Graphics Debugger.

As mentioned above, it's likely your problem has nothing to do with D3D itself, though you may be passing invalid or incorrect parameters to one or more D3D functions. You do some error checking in your code but you do not announce all of them. How do you announce the others?

But VS2013 Express for Windows Store does have it - it depends on which version he is using. I have also been able to use PIX in some cases even when the Win7 platform update has been installed - you just need to install the older DXSDK to get PIX. I think a frame grab will tell pretty easily what is going on. The arguments to the draw call, along with the size and contents of the buffers bound to the input assembler will give a quick answer about where the logic problem is.

@inzombiak: What I meant by "application problem" is that your application is probably sending D3D11 an invalid combination of API calls and/or arguments due to a logic error after you exceed 100 objects.

Yeah Im using the desktop version so no debugger, but I'm downloading the old sdk.

Until then, where might the issue lie? I'd assume in either the D3D class, Model class or Shader class correct?

Well I fixed it and am ashamed of why it wasn't working. Turns out that the text I was rendering was exceeding the predetermined length and breaking the render function before the D3D EndScene call.

Sorry for the trouble, I'm just going to no sulk in the corner for a bit.

May I ask how you determined that? Was it through PIX that you figured it out, or through another method? What can you apply to your debugging routine next time that will get you there faster???

Ran PIX, and the screen simply wasn't rendering as in calculations happened but the buffers weren't swapping. So I eventually figured it was because EndScene wasn't being called. I went through the code checking the D3D, Model and Shader classes and eventually found that I had placed a length limit on the text that shows how many models were being rendered. The 2nd 0 in 100 was pushing it over that limit causing the Render loop to exit before reaching EndScene.

Is that the answer to your questions? Did I understand you correctly?

Yes, that is perfect - my point was to consider using PIX as a starting point, and then debugging from there based on the trail you pick up.

Cool, thank you for your help guys.

This topic is closed to new replies.

Advertisement