SetRenderTarget将不起作用 [英] SetRenderTarget won't work

查看:140
本文介绍了SetRenderTarget将不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试渲染到屏幕外的表面,所以我这样做:


-------------------------------------------------
d3ddev-> GetRenderTarget(0,&backbuffer);
d3ddev-> CreateOffscreenPlainSurface(64,64,D3DFMT_A8R8G8B8,D3DPOOL_SYSTEMMEM,&surface,NULL);
...
d3ddev-> SetRenderTarget(0,surface);
d3ddev-> Clear(0,NULL,D3DCLEAR_TARGET,D3DCOLOR_XRGB(70,90,0),1.0f,0);

RECT rect;
rect.left = 0;
rect.top = 0;
rect.right = 63;
rect.bottom = 63;

D3DXVECTOR2 spriteCenter(32.0f,32.0f);
D3DXVECTOR2 trans(0,0);
D3DXMATRIX矩阵;
D3DXVECTOR2缩放比例(1.0f,1.0f);

D3DXMatrixTransformation2D(&matrix,&spriteCenter,0.0f,&scaling,&spriteCenter,tank.rotation,&trans);
sprite-> SetTransform(&matrix);
sprite-> Draw(纹理,&rect,NULL,NULL,0xFFFFFFFF);

sprite-> Flush();
...
d3ddev-> SetRenderTarget(0,backbuffer);
-----------------------------------------

但这不起作用,精灵在屏幕的左上角变白了.我尝试添加dev-> beginscene/endscene,sprite-> begin/end,但一无所获.

I''m trying to render to an off-screen surface, so i do:


-------------------------------------------------
d3ddev->GetRenderTarget(0, &backbuffer);
d3ddev->CreateOffscreenPlainSurface(64, 64, D3DFMT_A8R8G8B8, D3DPOOL_SYSTEMMEM, &surface, NULL);
...
d3ddev->SetRenderTarget(0, surface);
d3ddev->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(70, 90, 0), 1.0f, 0);

RECT rect;
rect.left = 0;
rect.top = 0;
rect.right = 63;
rect.bottom = 63;

D3DXVECTOR2 spriteCenter(32.0f, 32.0f);
D3DXVECTOR2 trans(0, 0);
D3DXMATRIX matrix;
D3DXVECTOR2 scaling(1.0f, 1.0f);

D3DXMatrixTransformation2D(&matrix, &spriteCenter, 0.0f, &scaling, &spriteCenter, tank.rotation, &trans);
sprite->SetTransform(&matrix);
sprite->Draw(texture, &rect, NULL, NULL, 0xFFFFFFFF);

sprite->Flush();
...
d3ddev->SetRenderTarget(0, backbuffer);
-----------------------------------------

But it won''t work, the sprites are blitted on the top-left corner of my screen. I tried adding dev->beginscene/endscene, sprite->begin/end, but nothing.

what''s wrong?

推荐答案

D3DXVECTOR2 trans(0,0);

让trans(X,Y)
D3DXVECTOR2 trans(0, 0);

Where trans(X,Y)


这样说:甚至可以D3DXSPRITE-> Draw到屏幕外的表面吗?还是仅仅到后缓冲区?

如果有人可以链接某人或发布规则的完整代码
Let''s put it this way: is it even possible to D3DXSPRITE->Draw to an off-screen surface? or just to the backbuffer?

if somebody can link a tut or post complete code that''d rule


在这里... ^ ]

问候
Here...http://www.toymaker.info/Games/html/sprites.html[^]

Regards


这篇关于SetRenderTarget将不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆