游戏开发论坛

 找回密码
 立即注册
搜索
查看: 5546|回复: 17

2D图形优化输出,越界剪切处理

[复制链接]

50

主题

382

帖子

392

积分

中级会员

Rank: 3Rank: 3

积分
392
发表于 2006-3-8 13:13:00 | 显示全部楼层 |阅读模式
2D图形优化输出,越界剪切处理

DirectDraw,Win32 的绘图API,都会有越界后,速度变慢的问题,下面代码可以很好的帮你解决这个问题。

原函数有BUG存在,修改如下,并增强了对左、上边界的处理  [em10][em5]
'---------------------------------------------------------------
'2D图形优化输出,越界剪切处理(2006-3-14)
'---------------------------------------------------------------
Public Function OptimizeOut(X As Long, Y As Long, Width As Long, Height As Long, srcX As Long, srcY As Long) As Boolean
    '当X向左中Y向上超出显示范围后,跳出,不显示
    If -X + m_Window.Left >= Width Or -Y + m_Window.Top >= Height Then
        Exit Function
    End If

    '当X向右中Y向下超出显示范围后,跳出,不显示
    If X > m_Window.Right Or Y > m_Window.Bottom Then
        Exit Function
    End If
   
    'X向左越界,剪切掉不绘出的部分
    If X < m_Window.Left Then
        srcX = srcX - X + m_Window.Left
        Width = Width + X - m_Window.Left
        X = m_Window.Left
    End If
   
    'X向右越界,剪切掉不绘出的部分
    If X + Width > m_Window.Right Then
        Width = m_Window.Right - X
    End If
   
    'Y向左越界,剪切掉不绘出的部分
    If Y < m_Window.Top Then
        srcY = srcY - Y + m_Window.Top
        Height = Height + Y - m_Window.Top
        Y = m_Window.Top
    End If
   
    'Y向右越界,剪切掉不绘出的部分
    If Y + Height > m_Window.Bottom Then
        Height = m_Window.Bottom - Y
    End If
   
    OptimizeOut = True
End Function

9

主题

20

帖子

20

积分

注册会员

Rank: 2

积分
20
发表于 2006-3-9 23:44:00 | 显示全部楼层

Re:2D图形优化输出,越界剪切处理

呵呵

13

主题

594

帖子

595

积分

高级会员

Rank: 4

积分
595
发表于 2006-3-10 13:33:00 | 显示全部楼层

Re:2D图形优化输出,越界剪切处理

??

32

主题

1583

帖子

1589

积分

金牌会员

Rank: 6Rank: 6

积分
1589
发表于 2006-3-11 19:23:00 | 显示全部楼层

Re:2D图形优化输出,越界剪切处理

Blt好像越界之后就会出错吧。

1

主题

50

帖子

52

积分

注册会员

Rank: 2

积分
52
发表于 2006-3-11 21:46:00 | 显示全部楼层

Re:2D图形优化输出,越界剪切处理

用DirectDraw非要去判定边界吗?感觉好像不用似的!

19

主题

69

帖子

69

积分

注册会员

Rank: 2

积分
69
发表于 2006-3-12 00:27:00 | 显示全部楼层

Re:2D图形优化输出,越界剪切处理

不明白用处

50

主题

382

帖子

392

积分

中级会员

Rank: 3Rank: 3

积分
392
 楼主| 发表于 2006-3-12 11:09:00 | 显示全部楼层

Re: Re:2D图形优化输出,越界剪切处理

sandy_zc_1: Re:2D图形优化输出,越界剪切处理

Blt好像越界之后就会出错吧。


DDraw 提供了越界处理的方法,但速度很慢

50

主题

382

帖子

392

积分

中级会员

Rank: 3Rank: 3

积分
392
 楼主| 发表于 2006-3-12 11:11:00 | 显示全部楼层

Re: Re:2D图形优化输出,越界剪切处理

kimja: Re:2D图形优化输出,越界剪切处理

用DirectDraw非要去判定边界吗?感觉好像不用似的!


不是非要去判定边界

优化的意义在于提高速度,你可以测下图像在越界的时候的速度。

50

主题

382

帖子

392

积分

中级会员

Rank: 3Rank: 3

积分
392
 楼主| 发表于 2006-3-12 11:19:00 | 显示全部楼层

Re:2D图形优化输出,越界剪切处理

我在使用 DX8或DX9 的Sprite 没碰到过越界后速度变慢的问题。

0

主题

12

帖子

12

积分

新手上路

Rank: 1

积分
12
发表于 2006-3-13 13:56:00 | 显示全部楼层

Re:2D图形优化输出,越界剪切处理

不会越界吧。。。。。没碰到过

DD 内部提供了裁剪器,不用多此一举吧。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-24 07:08

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表