pajofego
2004-05-16, 22:19:36
Hallo miteinander,
ich habe da folgendes Problem:
Ich erstelle unter DirectX vier Texturen, vier RenderSurfaces und vier Shaderdateien, die ich mit fxc.exe incl. Debuginformationen compiliere.
Die ersten drei Shaders werden aufgerufen beim vierten passiert gar nichts, d.h. der vierte wird nicht aufgerufen. Dabei habe ich für alle
vier den gleichen Code benutzt(InitTextures1, InitTextures2 usw. sowie für Render1, Render2 ) wie unten: Gibt es irgendeine Besonderheit
bei der Verwendung von D3DXCreateRenderToSurface? Kann man da nicht beliebig viele davon erstellen und beliebig viele Shaders darauf an-
wenden? Ich hoffe ich konnte mein Problem einigermaßen vernünftig darstellen. Danke für eure Mühe.
Gruss pajofego
VOID InitTextures1()
{
g_pd3dDevice->CreateTexture(128, 128, 1, D3DUSAGE_RENDERTARGET, D3DFMT_A32B32G32R32F, D3DPOOL_DEFAULT, &g_pTexture1, NULL);
g_pTexture1->GetSurfaceLevel(0, &g_pTextureSurface1);
D3DSURFACE_DESC desc;
g_pTextureSurface1->GetDesc( &desc );
D3DXCreateRenderToSurface( g_pd3dDevice, desc.Width, desc.Height, desc.Format, TRUE, D3DFMT_D24S8, &g_pRenderSurface1);
}
VOID Render1()
{
UINT cPasses;
D3DXVECTOR4 fVector4 = D3DXVECTOR4(1.2f, 0.0f, 0.0f, 0.0f);
g_pRenderSurface1->BeginScene(g_pTextureSurface1, NULL);
g_pShader1->SetTechnique("tMakeShader1");
g_pShader1->SetVector("Value1", &fVector4);
g_pShader1->Begin(&cPasses, 0);
g_pShader1->Pass(0);
g_pd3dDevice->SetStreamSource( 0, g_pVB, 0, sizeof(CUSTOMVERTEX) );
g_pd3dDevice->SetFVF( D3DFVF_CUSTOMVERTEX );
g_pd3dDevice->DrawPrimitive(D3DPT_TRIANGLEFAN, 0, 2);
g_pShader1->End();
g_pRenderSurface1->EndScene(0);
}
ich habe da folgendes Problem:
Ich erstelle unter DirectX vier Texturen, vier RenderSurfaces und vier Shaderdateien, die ich mit fxc.exe incl. Debuginformationen compiliere.
Die ersten drei Shaders werden aufgerufen beim vierten passiert gar nichts, d.h. der vierte wird nicht aufgerufen. Dabei habe ich für alle
vier den gleichen Code benutzt(InitTextures1, InitTextures2 usw. sowie für Render1, Render2 ) wie unten: Gibt es irgendeine Besonderheit
bei der Verwendung von D3DXCreateRenderToSurface? Kann man da nicht beliebig viele davon erstellen und beliebig viele Shaders darauf an-
wenden? Ich hoffe ich konnte mein Problem einigermaßen vernünftig darstellen. Danke für eure Mühe.
Gruss pajofego
VOID InitTextures1()
{
g_pd3dDevice->CreateTexture(128, 128, 1, D3DUSAGE_RENDERTARGET, D3DFMT_A32B32G32R32F, D3DPOOL_DEFAULT, &g_pTexture1, NULL);
g_pTexture1->GetSurfaceLevel(0, &g_pTextureSurface1);
D3DSURFACE_DESC desc;
g_pTextureSurface1->GetDesc( &desc );
D3DXCreateRenderToSurface( g_pd3dDevice, desc.Width, desc.Height, desc.Format, TRUE, D3DFMT_D24S8, &g_pRenderSurface1);
}
VOID Render1()
{
UINT cPasses;
D3DXVECTOR4 fVector4 = D3DXVECTOR4(1.2f, 0.0f, 0.0f, 0.0f);
g_pRenderSurface1->BeginScene(g_pTextureSurface1, NULL);
g_pShader1->SetTechnique("tMakeShader1");
g_pShader1->SetVector("Value1", &fVector4);
g_pShader1->Begin(&cPasses, 0);
g_pShader1->Pass(0);
g_pd3dDevice->SetStreamSource( 0, g_pVB, 0, sizeof(CUSTOMVERTEX) );
g_pd3dDevice->SetFVF( D3DFVF_CUSTOMVERTEX );
g_pd3dDevice->DrawPrimitive(D3DPT_TRIANGLEFAN, 0, 2);
g_pShader1->End();
g_pRenderSurface1->EndScene(0);
}