It really depends on what you are going to do in your game. If you aren't going to have a lot of different graphics than loading them all on to surface in video memory and using DirectX blting functions is the best way to go because it allows you to take advantage of hardware acceleration. But if you are going to use a lot of different graphics (greater than the amount of free video memory) it would probably be better to use your own blting function. If you want to create effects where you read from the drawing buffer (alpha blending) you should create your own functions because it allows for the most compatibility. If you intend on porting your game over to other platforms your better off making your own functions because you are going to have to create them sometime anyway.