Ahoj,
snažím se dojít na to jak používat VertexShader v DirectX ale asi (určitě) dělám něco špatně a nemůžu dojít na to co. Myslím, že nejlépe pomůže část kodu...
Assembler VertexShaderu - měl by jen prohodit souřadnice, nic složitého (mimochodem zkoušel jsem pár zdrojáků již napsaných):
vs.1.0
dcl_position v0
mov r1.x, v0.y
mov r1.y, v0.z
mov r1.z, - v0.x
mov r1.w, v0.w
mov oPos, r1
Vytvoření VertexShaderu (s tím není problém, funguje správně):
IDirect3D9 * D3D;
IDirect3DDevice9 * D3DD;
ID3DXMesh * D3DM;
IDirect3DVertexShader9 * D3DVS;
ID3DXBuffer * D3DB;
...
D3DXAssembleShaderFromFile( "vertexshader.vs", 0, 0, 0, &D3DB, 0 );
D3DD -> CreateVertexShader( ( DWORD * ) D3DB, &D3DVS );
...
Použití při renderování:
...
D3DD -> BeginScene();
D3DD -> SetVertexShader( D3DVS );
D3DM -> DrawSubset( 0 );
D3DD -> EndScene();
D3DD -> Present( 0, 0, 0, 0 );
...
Klasicky kreslím mesh konvičky, problém je v tom že mi ve scéně onen VertexShader prostě nic nedělá a nedaří se mi dojít na to proč.
Díky za rady...