Jump to content
  • Advertisement
Sign in to follow this  
Andruil

HLSL and render targets

This topic is 4898 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hi i'm trying to learn shaders right now and i've gotten to the point that I need to be able to render what I see on the screen to a texture and then reuse it. where can I find help regarding render targets because I don't understand them at all. I've actually got it rendering to a target but instead of the whole screen being written to it all I get is the stuff that was in my square in the center of my screen. I'm lost on how to use render targets and I probably haven't even created them right so if someone could please direct me to a tutorial or help me out here on how to correctly create and use a render target I would appreciate it. P.S I am basically trying to create a simple visualization like you see in wmp so if you know of any tutorials on that i'd appreciate those too :).

Share this post


Link to post
Share on other sites
Advertisement
Have a quick look at D3DXCreateRenderToSurface() - this makes rendering to a surface (or texture) childsplay. I use it to implement post-processed glow effects.

Share this post


Link to post
Share on other sites
Hi, I am fairly new to this too but I have my rendertargets working for me. This stuff may or maynot be the best way to do it however! Declaring:

LPD3DXRENDERTOSURFACE renderSurfaceHDR[5];
LPDIRECT3DTEXTURE9 dynamicTextureHDR[5];
LPDIRECT3DSURFACE9 textureSurfaceHDR[5];


You set them up like:


hr = D3DXCreateTexture( Device,
Pixels,
Pixels,
mipmapLevels,
D3DUSAGE_RENDERTARGET,
D3DFMT_A16B16G16R16F, // D3DFMT_A16B16G16R16F D3DFMT_A8R8G8B8
D3DPOOL_DEFAULT,
&dynamicTextureHDR);

if( FAILED(hr) )
{
MessageBox(NULL,"Failed to create a texture with the D3DUSAGE_RENDERTARGET usage flag set!",
"ERROR",MB_OK|MB_ICONEXCLAMATION);
exit(-1);
}

// Create an off-screen "render to" surface...

dynamicTextureHDR->GetSurfaceLevel( 0, &textureSurfaceHDR);
textureSurfaceHDR->GetDesc( &desc );

hr = D3DXCreateRenderToSurface( Device,
desc.Width,
desc.Height,
desc.Format,
TRUE,
D3DFMT_D16,
&renderSurfaceHDR); //[(5 * i) + j] );

if( FAILED(hr) )
{
MessageBox(NULL,"Failed to create the off-screen render surface!",
"ERROR",MB_OK|MB_ICONEXCLAMATION);
exit(-1);
}


Then for rendering:


renderSurfaceHDR[j]->BeginScene(textureSurfaceHDR[j], NULL);
Device->Clear( 0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER,
D3DCOLOR_COLORVALUE(1.0f,1.0f,1.0f,1.0f), 1.0f, 0);
// render scene

renderSurfaceHDR[j]->EndScene(0);


Then you can use the texture to whatever you want to do. So if you want to render what you got to the screen just texture map something like:


Device->SetTexture(0, dynamicTextureHDR[0]);


and then remember to delete them before exiting your application. I'm using an array because I'm using render surfaces to render the scene onto a hemicube which has 5 sides.

Remember to setup any new projection matrices and cameras if you are rendering to somewhere other than to the screen.

Share this post


Link to post
Share on other sites
Thanks a bunch. yeah right now all I am really trying to do is take a screenshot so the camera isn't an issue right now. well thanks a bunch i'll try that and hopefully get this working

Share this post


Link to post
Share on other sites
Ok i'm an idiot.... Sorry to whoever looked at this last post of mine. I forgot to call end on my effect so it never stopped and never even loaded the second one. Well thanks for the help on render targets

[Edited by - Andruil on May 24, 2005 1:04:06 PM]

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!