2D怎么让精灵在指定的矩形内刷新?
2D怎么让精灵在指定的矩形内刷新?RT。。。
比如 创建了个 1024X768的窗口。。。我想只在 x = 512 y = 384 width = 512 height = 384 的矩形内刷新。。。其他地方不会有精灵的显示出来。。。精灵超出范围的部分不显示。。。应该怎么弄呢??
device::SetViewport可以吧?那如果我有10个精灵在上面的范围刷新,10个无限制,10个又在别的范围内刷新,其他的又和以上的不同。。。那是不是要创建很多个device才行? 为所有被显示资源建立一个列表,每次在显示之前,先处理列表,再显示。这样就没问题了。
比如你说的这种,可以先把 x = 512 y = 384 width = 512 height = 384 的矩形外的精灵从列表中排除出去,然后再显示整个列表,这样只能是矩形内的被显示。
当然对于2D游戏而言,列表这样数据结构还是太简单了,如果用二、四叉树,可能会更好一点,可以实现更多的效果,更好的性能。 这是一个裁减问题,如果是dx9的话,像这样调用:
RECT rcScissorRect = { 20, 20, 50, 50 };
m_pD3DDevice->SetScissorRect(&rcScissorRect);// 使得下面的渲染仅对该裁减区域有效,区域外的内容将不被渲染,
用完别忘了取消裁减区域,直接:m_pD3DDevice->SetScissorRect(NULL);就可以
也可以传整个窗口的RECT
另外别忘了在初始化的时候开启裁减功能:
m_pD3DDevice->SetRenderState(D3DRS_SCISSORTESTENABLE, TRUE); 谢谢LS,不过这都是一年前的帖子了,我现在改学opengl去了,嗯嗯,不过学会了这个opengl也能用的上哈,一通百通 嘿嘿,纯顶了
页:
[1]