scale texture or move camera
When dealing with a 2d tileset in d3d, is it better to move the camera adjusting distance to zoom or is it better to scale the texture's world matrix by the scale factor and shift the camera?
Is there anything that would perform differently between the two? I thought I remembered reading someone recommending the later, but I can't remember why.
GrkEngineer
While you could apply a scale transformation using either the world or view transform, moving the camera isn't the same a scale transformation. Moving the camera is a translation transformation and only results in things changing sizes because you're using a perspective transformation. How much things change in size depends on the far they are from the camera. If you're using an othogonal projection then moving the camera won't change the size of anything.
If your 2D tileset is exists conceptully in a 3D space, with different parallel 2D planes at various distances (eg. a background some distance behind the tileset, and sprites some distance in front), than whether you want you move the camera or scale the tileset depends on which effect you're trying to acheive. Assuming you're using a perspective transformation, moving the camera will look like the camera moved away from the scene and scaling the tile will make it look like the tileset got bigger. They won't look the same.
If your 2D titleset is exists conceptully in a 2D space with all other 2D objects (if any) coplanar with your tileset, then it's probably better not consider the view and perspective matrixes in their traditional roles. They end up, when combined with the viewport transformation, just a simple transformation from your own 2D space to the screen's 2D space. Normally for a 2D game, this ends up being a 1:1 transformation. In this case, you're probably better using the view matrix if everything is being scaled, and the world matrix if only some of the 2D objects in your scene are changing size.
Finally, if you're using transformed vetrices (ie. D3DFMT_XYZRHW), then none of the transformation matrixes are applied and to scale anything you would need transform the vertices yourself.