在d3d里面是否就简单了?还有就是在d3d里显示二维的图形比如文字、按钮、对话框,绘制他们的时候是否只能用纹理贴图?可不可以同时创建一个ddraw然后blt呢?
先谢过了!!!
8 个解决方案
#1
怎么看不到我的帖子?
#2
在DirectDraw的条件下,一般的情况是至少开一个BackSurface,在系统默认的条件下,这个BackSurface是优先开在显示内存里面的。这样当显示的时候,程序要把系统内存里面的大量数据组织起来,传送到显示内存里面的BackSurface去。然后显示。由于把数据从其他的地方放到显示内存里面的时候,数据并不总是有序的,所以,虽然BackSurface的大小是一个屏幕,但是我们实际上传送的数据却超过了一个屏幕。在我的拚图器里面就是如此。由于地图是多层的,所以每显示一次,根据地图的层次,至少要传送2-3屏的数据。这里其实没有问题。问题在于:BackSurface开在什么地方的问题。
众所周知,从内存到显示内存的数据传送速度比从内存到内存的速度慢,也比从显示内存到显示内存的速度慢。我们如果把BackSurface开在系统内存里面,这样要显示的时候,我们只要把BackSurface的数据送到PrimarySurface里面,也就是说,我们只要从内存传送一屏的的数据到显示内存里面就可以了,而上面所说的组织数据的问题,则是在速度较快的内存到内存之间的操作。而假如我们把BackSurface开在显示内存里面,则每次显示的时候,组织数据是通过速度较慢的显示内存到内存之间的操作,则2-3屏的数据足以使整体速度下降很多。
应该尽可能的把BakcSurface开在系统内存里面。
以上转载
DDRAW中的Gamma控制功能来做
众所周知,从内存到显示内存的数据传送速度比从内存到内存的速度慢,也比从显示内存到显示内存的速度慢。我们如果把BackSurface开在系统内存里面,这样要显示的时候,我们只要把BackSurface的数据送到PrimarySurface里面,也就是说,我们只要从内存传送一屏的的数据到显示内存里面就可以了,而上面所说的组织数据的问题,则是在速度较快的内存到内存之间的操作。而假如我们把BackSurface开在显示内存里面,则每次显示的时候,组织数据是通过速度较慢的显示内存到内存之间的操作,则2-3屏的数据足以使整体速度下降很多。
应该尽可能的把BakcSurface开在系统内存里面。
以上转载
DDRAW中的Gamma控制功能来做
#3
谢谢 Lucende(而已书生) !那么我做半透明的方法是否正确呢?就是取得然后运算然后再赋值回去?
#4
是正确的 你可以看一下我在这个帖子里面的回答 那些函数我写出来之后都反复用过的 除了对图像大小有一点限制之外 没有其他问题 而且确确实实提高了显示速度 希望能对你有所帮助 限于篇幅 我只给一个链接
http://community.csdn.net/Expert/topic/3211/3211230.xml?temp=.8214838
http://community.csdn.net/Expert/topic/3211/3211230.xml?temp=.8214838
#5
看看先……
看来我得复习汇编去了……
那么这段优化只是针对Intel的CPU的吗?
看来我得复习汇编去了……
那么这段优化只是针对Intel的CPU的吗?
#6
要做特性最好用D3D。然后Lock住BackBuffer一样可以像DDraw一样用,再加上硬件支持的加速特性。。。
关于DDraw,记住,读取显存里的表面是慢得无法想像的事情。请把BackBuffer建到系统内存里。
关于DDraw,记住,读取显存里的表面是慢得无法想像的事情。请把BackBuffer建到系统内存里。
#7
d3d和ddraw不能混用
做alpha混合最好当然用d3d,用ddraw的话可以抄网上现成的汇编代码。
做alpha混合最好当然用d3d,用ddraw的话可以抄网上现成的汇编代码。
#8
收到!
太谢谢各位了!!!
太谢谢各位了!!!
#1
怎么看不到我的帖子?
#2
在DirectDraw的条件下,一般的情况是至少开一个BackSurface,在系统默认的条件下,这个BackSurface是优先开在显示内存里面的。这样当显示的时候,程序要把系统内存里面的大量数据组织起来,传送到显示内存里面的BackSurface去。然后显示。由于把数据从其他的地方放到显示内存里面的时候,数据并不总是有序的,所以,虽然BackSurface的大小是一个屏幕,但是我们实际上传送的数据却超过了一个屏幕。在我的拚图器里面就是如此。由于地图是多层的,所以每显示一次,根据地图的层次,至少要传送2-3屏的数据。这里其实没有问题。问题在于:BackSurface开在什么地方的问题。
众所周知,从内存到显示内存的数据传送速度比从内存到内存的速度慢,也比从显示内存到显示内存的速度慢。我们如果把BackSurface开在系统内存里面,这样要显示的时候,我们只要把BackSurface的数据送到PrimarySurface里面,也就是说,我们只要从内存传送一屏的的数据到显示内存里面就可以了,而上面所说的组织数据的问题,则是在速度较快的内存到内存之间的操作。而假如我们把BackSurface开在显示内存里面,则每次显示的时候,组织数据是通过速度较慢的显示内存到内存之间的操作,则2-3屏的数据足以使整体速度下降很多。
应该尽可能的把BakcSurface开在系统内存里面。
以上转载
DDRAW中的Gamma控制功能来做
众所周知,从内存到显示内存的数据传送速度比从内存到内存的速度慢,也比从显示内存到显示内存的速度慢。我们如果把BackSurface开在系统内存里面,这样要显示的时候,我们只要把BackSurface的数据送到PrimarySurface里面,也就是说,我们只要从内存传送一屏的的数据到显示内存里面就可以了,而上面所说的组织数据的问题,则是在速度较快的内存到内存之间的操作。而假如我们把BackSurface开在显示内存里面,则每次显示的时候,组织数据是通过速度较慢的显示内存到内存之间的操作,则2-3屏的数据足以使整体速度下降很多。
应该尽可能的把BakcSurface开在系统内存里面。
以上转载
DDRAW中的Gamma控制功能来做
#3
谢谢 Lucende(而已书生) !那么我做半透明的方法是否正确呢?就是取得然后运算然后再赋值回去?
#4
是正确的 你可以看一下我在这个帖子里面的回答 那些函数我写出来之后都反复用过的 除了对图像大小有一点限制之外 没有其他问题 而且确确实实提高了显示速度 希望能对你有所帮助 限于篇幅 我只给一个链接
http://community.csdn.net/Expert/topic/3211/3211230.xml?temp=.8214838
http://community.csdn.net/Expert/topic/3211/3211230.xml?temp=.8214838
#5
看看先……
看来我得复习汇编去了……
那么这段优化只是针对Intel的CPU的吗?
看来我得复习汇编去了……
那么这段优化只是针对Intel的CPU的吗?
#6
要做特性最好用D3D。然后Lock住BackBuffer一样可以像DDraw一样用,再加上硬件支持的加速特性。。。
关于DDraw,记住,读取显存里的表面是慢得无法想像的事情。请把BackBuffer建到系统内存里。
关于DDraw,记住,读取显存里的表面是慢得无法想像的事情。请把BackBuffer建到系统内存里。
#7
d3d和ddraw不能混用
做alpha混合最好当然用d3d,用ddraw的话可以抄网上现成的汇编代码。
做alpha混合最好当然用d3d,用ddraw的话可以抄网上现成的汇编代码。
#8
收到!
太谢谢各位了!!!
太谢谢各位了!!!