Jump to content

  • Log In with Google      Sign In   
  • Create Account


Member Since 07 Aug 2012
Offline Last Active Jun 22 2016 09:22 AM

Posts I've Made

In Topic: How to pass DeviceContext to other classes?

22 April 2015 - 03:53 AM

Usually there is an explicit relationship between the resource and its creator ( ID3D11Device ) and during its lifetime is very unlikely to change, and in case it might need to change ( creation / destruction ) is way better ( IMHO ) to directly create a new instance. Thus i would approach the problem this way :

class IResource
    IResource(GraphicsContext& graphics_context) : m_graphics_context { graphics_context } { }

    GraphicsContext& m_graphics_context;

obviously the GraphicsContext& contains Device, immediate context, feature levels and more ( it can also be a POD ). Since you directly manipulate resources w/ no handles inbetween copying resources is debatable smile.png.


I´m personally a big fan of references, but still you might go aswell with pointers. References disallow invalid ( null ) instances but at the same time they do have some ¨¨problems¨¨ ( if you wanna call them that way ) with copy constructors.


If you think the resource is going to be recreated different times by different devices, just ( as said already ) pass the graphics context or the device to the create() method. Since i´m sort of promoting references, pass the parameter as reference <3 and keep it as a pointer inside. ( we are using C++ afterall )


Happy coding smile.png

In Topic: Switching from XNA to DirectX9 for 2D platformer

17 August 2014 - 04:47 AM

I'll try to address your question the best way i can ( i'm not the most experienced around here) ^^ :
- Direct3D11 should be available from Vista SP2+ if i'm not wrong. Choosing whether to support Windows XP or not is totally your choice, i would probably read some hardware surveys ( http://store.steampowered.com/hwsurvey | http://stats.unity3d.com/pc/index.html ). Yes, there are still many peoples running Windows XP ( unfortunately ) biggrin.png

- I'm sorry i'm not aware of any reference article that covers 'doing 2D with D3D', still, as i wrote the previous post and if you start googling around, most of the answers will reference :
- Textured quads
- GS
- Batching
and this is exactly how XNA would do it ( not GS tho ) [ https://directxtk.codeplex.com/SourceControl/latest#Src/SpriteBatch.cpp ]

- Direct3D vs OpenGL on Windows, argh this question ^^ Don't like this terrain... I cautiously tell you that D3D 'should' 'is supposed' 'might' be better than OGL on Windows platform mostly due to hardware support, but Valve wouldn't agree with me ( http://blogs.valvesoftware.com/linux/faster-zombies/ ) [ I took 'better' for 'faster' ]. I personally prefer D3D API to the OGL's one, but that's a matter of taste.

- I'm just going to mention this library, i don't think it really fits your purpose and i hate its API, but you've probably heard of it and you will : Direct2D. Developing games / wrapping it up is quite painful for the way it is structured, but undoubtedly has a crazy amount of features.

If you code your entire game with no wrapping, porting it to OpenGL is probably a hassle, if you start wrapping D3D calls / resources it will not be that hard to port it to OGL, not saying it is easy tho.

Another road you might take if you are going to port the game later is just dive into OGL and leave D3D aside for the moment.

Hope i was helpful, and you if need anything else, don't hesitate to PM me.

Happy coding smile.png

In Topic: Switching from XNA to DirectX9 for 2D platformer

17 August 2014 - 03:19 AM


I'll just point out few things :

- XNA bottleneck : As long as the game runs fine (60+ fps ) using XNA i don't see the need to switch to D3D for performance reasons. If you have a real bottleneck is probably somewhere else or you draw something like tens of thousands of particles in an inefficient way. The statement [ xna is working much slower than directx ] well.. it's too wide, it is true for obvious reasons, but at the same time, this performance difference should be negligible for the most part.  


- XNA / C# D3D / C++ : by switching to D3D9 i guess you were considering moving to C++ ( but you might be talking about Managed DX ). Learning D3D will be fulfilling in many ways, but not a wise choice if your purpose is to complete the game as soon as possible. C++ is a whole another language and will massively ( usually, don't take my word for wisdom ) increase your development time. 


- D3D9 : there is a new, much better ( depends ? ) version called D3D11 that provides backward compatibility with D3D9 hardware http://msdn.microsoft.com/en-us/library/windows/desktop/ff476876(v=vs.85).aspx


- 2D with D3D : after you've properly chosen to use D3D11 and start looking for 2D help people will tell you : 2D is nothing else than rendering textured quads, well that's it really. There are many techniques that you can use ( naming Geometry Shaders, Instancing, Batching ) but it all revolves around 2 triangles being textured. If you come from XNA i'd really tell you to check out DirectXTK ( https://directxtk.codeplex.com/ ). It provides some XNA-like modules for D3D11. If you still don't want to use it, just dig in the source code to learn more.


- Platform games : same concepts apply to D3D


Have fun & happy coding : )

In Topic: Game engine: Batch rendering advice?

23 May 2013 - 10:09 AM

Thank you for the answer, as soon as i get home i'll make a couple of tests with the particle engine!

Btw great blog, bookmarked :)

Happy coding !

In Topic: Game engine: Batch rendering advice?

23 May 2013 - 09:44 AM

Thanks from me too Spiro!

I've read your article and i was interested in the DX9 32 bit padding, since XNA is DX9 based it is supposed to work too, isnt it? If you had any experience with it i'd be glad to hear from you :)

Thank you for your time and happy coding!!