http://bugs.winehq.org/show_bug.cgi?id=22918
--- Comment #48 from Tony Wasserka tony.wasserka@freenet.de 2010-07-28 12:02:11 --- (In reply to comment #47)
Ok, here is my argument why we _should_ use FVFs internally:
- D3DXCreateMesh _only_ allows declarations that map to FVFs
http://msdn.microsoft.com/en-us/library/bb172780%28v=VS.85%29.aspx
pDeclaration [in] LPD3DVERTEXELEMENT9
Array of D3DVERTEXELEMENT9 elements, describing the vertex format for the
returned mesh. This parameter must map directly to a flexible vertex format (FVF).
Yeah, problem with that: You CAN actually create meshes with vertex decls which don't match any FVF. Not with D3DXCreateMesh, but with ID3DXBaseMesh::CloneMesh. It won't fail if the vdecl doesn't match an FVF and at least one of the DX SDK samples actually depend on this feature. So you'll at least need to use vdecl vertexbuffers internally to make this work.
- If we implement D3DXCreateMesh first we still have to implement
D3DXFVFFromDeclarator for index buffer creation
IDirect3DDevice9::CreateIndexBuffer http://msdn.microsoft.com/en-us/library/bb174357%28VS.85%29.aspx
huh, why do we need D3DXFVFFromDeclarator for CreateIndexBuffer? oO Anyway, yes, then we'll have to implement D3DXFVFFromDeclarator first... no, we don't need to actually. I already implemented it as well in my git repo (mesh.c), doesn't even look that hard to get into master ;)
- The goal of wine, per Alexandre's private email to myself:
Our goal is not to implement the Win32 API just for the sake of it, it's to run actual Windows applications. So APIs that are not used in real life don't need to be implemented.
(FYI this had to do with a teapot discussion and so is clearly taken out of the context. However, I believe the point I got from this is that our goal is to make things work on Wine. FVFs would work much better and make implementation quite a bit easier to make Ship Simulator 2008 demo work (better) under Wine.
uhm well, but there are more applications than just Ship Simulator 2008... I'm not saying just to give you more work, but it'd be kind of useless if one had to restructure the whole code to get ANOTHER app running just because the previous implementation only focused on that one game :/
Best regards Tony