 |
VirtualDJ - Video Effects & Transitions (How To) (Fri 10 Nov 06 @ 15:10:37) |
 |
1) The main thing to use Direct3D is to have : IDirect3DDevice9 *pd3dDevice;
As this pointer is defined by the VirtualDJ sofware, a global pointer is given in the VirtualDJ video plugins SDK: IDirect3DDevice9 *D3DDevice;
Each time you want to use a Direct3D functions, you have to use "D3DDevice->"
2) A vertex is a dot in the space defined by a struct TVertex (NB: one vertex, two vertices)
struct TVertex { struct {FLOAT x,y,z;} position; // The 3D position (coordinates) for the vertex DWORD color; // The vertex color FLOAT tu,tv; // The texture coordinates };
3D models in Direct3D are based on triangles: To define a triangle, you need 3 Vertices: vertices[0], vertices[1], vertices[2] To define a square so 4 Vertices: vertices[0], vertices[1], vertices[2], vertices[3], you need 2 triangles : {vertices[0], vertices[1], vertices[2]} and {vertices[1], vertices[3], vertices[2]}

Texturing:
"IDirect3DTexture9 *texture" in the function OnDraw is the current video texture
Then you apply the texture (video,bitmap,...) on this square with the following function:
D3DDevice->SetTexture(0,texture);
NB: in this case "0" means the first stage of the video
Renderering:
return S_FALSE; will automatically render the video for you
if you want to render by yourself, you can use for example the following function: D3DDevice->DrawPrimitiveUP(D3DPT_TRIANGLESTRIP,2,(LPVOID)Vertices,sizeof(Vertices[0])); and in this case, use return S_OK;
|