如何提高绘图效率(GDI,GDI++,Directx)? (转自桌游程序员幸运星空间)
2010-10-25 22:58
351 查看
在
GDI
中利用双缓冲技术我们通过在内存中操作的速度远远大于在屏幕上画图的速度的特点解决了刷新屏幕的时候屏幕闪烁的现象。的确如此,在下面的代码我们可以看到
:
LRESULT
CVeiwManage
::ReDraw
(HDC
hdc
,int
x
,int
y
)
{
HBITMAP
m_backbitmap
=NULL
;
Create
(m_backbitmap
,hdc
,m_myRect
.right
-m_myRect
.left
,m_myRect
.bottom
-m_myRect
.top
,m_bkColor
);
HDC
mdc
=CreateCompatibleDC
(hdc
);
SelectObject
(mdc
,m_backbitmap
);
OnPreDraw
(mdc
);
OnDraw
(mdc
);
OnDrawEnd
(mdc
);
if
(bTrans
)
{
TransparentBlt
(hdc
,m_myRect
.left
,m_myRect
.top
,m_myRect
.right
-m_myRect
.left
,
m_myRect
.bottom
-m_myRect
.top
,mdc
,0,0,m_myRect
.right
-m_myRect
.left
,m_myRect
.bottom
-m_myRect
.top
,crTransColor
);
}
else
{
BitBlt
(hdc
,m_myRect
.left
,m_myRect
.top
,m_myRect
.right
-m_myRect
.left
,
m_myRect
.bottom
-m_myRect
.top
,mdc
,0,0,SRCCOPY
);
}
DeleteObject
(m_backbitmap
);
DeleteDC
(mdc
);
return
0;
}
我们利用了双缓冲技术在一个内存DC
上绘制图片,然后在将内存DC
拷贝到屏幕DC
上。在主窗口中,我们采用帧频为25HZ
的速度刷新屏幕,但是一个新的问题出现了,如果存在很多的GDI
对象,在绘制的过程中CPU
占用达到了30%
以上。如何才能在优化界面的基础上减少CPU
的占用率?我觉得速度瓶颈不在于GDI
输出而在于逻辑和绘图的方法。
GDI
中利用双缓冲技术我们通过在内存中操作的速度远远大于在屏幕上画图的速度的特点解决了刷新屏幕的时候屏幕闪烁的现象。的确如此,在下面的代码我们可以看到
:
LRESULT
CVeiwManage
::ReDraw
(HDC
hdc
,int
x
,int
y
)
{
HBITMAP
m_backbitmap
=NULL
;
Create
(m_backbitmap
,hdc
,m_myRect
.right
-m_myRect
.left
,m_myRect
.bottom
-m_myRect
.top
,m_bkColor
);
HDC
mdc
=CreateCompatibleDC
(hdc
);
SelectObject
(mdc
,m_backbitmap
);
OnPreDraw
(mdc
);
OnDraw
(mdc
);
OnDrawEnd
(mdc
);
if
(bTrans
)
{
TransparentBlt
(hdc
,m_myRect
.left
,m_myRect
.top
,m_myRect
.right
-m_myRect
.left
,
m_myRect
.bottom
-m_myRect
.top
,mdc
,0,0,m_myRect
.right
-m_myRect
.left
,m_myRect
.bottom
-m_myRect
.top
,crTransColor
);
}
else
{
BitBlt
(hdc
,m_myRect
.left
,m_myRect
.top
,m_myRect
.right
-m_myRect
.left
,
m_myRect
.bottom
-m_myRect
.top
,mdc
,0,0,SRCCOPY
);
}
DeleteObject
(m_backbitmap
);
DeleteDC
(mdc
);
return
0;
}
我们利用了双缓冲技术在一个内存DC
上绘制图片,然后在将内存DC
拷贝到屏幕DC
上。在主窗口中,我们采用帧频为25HZ
的速度刷新屏幕,但是一个新的问题出现了,如果存在很多的GDI
对象,在绘制的过程中CPU
占用达到了30%
以上。如何才能在优化界面的基础上减少CPU
的占用率?我觉得速度瓶颈不在于GDI
输出而在于逻辑和绘图的方法。
相关文章推荐
- 程序员如何提高工作效率
- 程序员究竟该如何提高效率
- 【扣丁学堂】程序员如何提高工作效率?
- 程序员如何提高工作效率
- [转] 一个优秀的程序员应该如何提高工作效率?
- 程序员如何提高工作效率
- 程序员究竟该如何提高效率
- 程序员如何提高工作效率
- 程序员究竟该如何提高效率【转】
- 程序员如何提高工作效率
- 程序员该如何提高效率
- 程序员究竟该如何提高效率
- 程序员究竟该如何提高效率
- 程序员究竟该如何提高效率
- 程序员如何提高工作效率(转)
- 如何提高android程序运行效率,程序员在开发过程中应当注 意的一些事项
- 程序员究竟该如何提高效率
- 程序员该如何提高效率
- 如何提高android程序运行效率,程序员在开发过程中应当注意的一些事项
- 程序员如何提高工作效率