1. directdraw读取视频图像数据不断显示,在单屏模式下画面流畅没问题,但是把窗口程序拖到扩展屏就又卡又花
directdraw读取视频图像数据不断显示,在单屏模式下画面流畅没问题,但是把窗口程序拖到扩展屏就又卡又花
2. directx编程中关于LPDIRECTDRAWSURFACE7
你光指明路径不行,你还得把你需要的LIB包含到你的项目里去.否则你的编译器到哪里去找D3D对象啊
在Project-->Setting-->Link-->L object/Mole里添加d3d8.lib d3d9.lib ddraw.lib dinput.lib...(名称我忘记了,可能名称记错了) ...等等,然后重新全部编译一次.
另外还要保证你的SDK没问题,你说的9.0b应该不存在支持7.0的问题.
但9.0c就不一定了
3. 求DirectDraw的vc编程小例子,或者请教一些有关DirectDraw的问题
给你ddex1到5的那个~
4. DirectX10没有DirectDraw
大概8年前我开始做DirectX的时候,DirectDraw就基本上没有意义了(但当时在CE上则只能用DirectDraw做画图)。为什么,其实很简单:任何2D的东西,都可以看作是3D的特例。例如一个2D的向量(x,y),其实就是3D的向量(x,y,0)。
所以,用Direct3D进行2D编程就可以了。特别是做shader编程的时候,只要忽略第3个维度,其它一切都照常。只需注意,在2D平面上画图,坐标都是用标准化的坐标系[-1.0, 1.0]*[-1.0,1.0]来表示的。
至于你如果想直接写像素,Direct3D也提供了lock和unlock一个表面的功能,锁定之后的表面就可以直接访问“显存”,也可以说是DirectDraw编程的继承了吧。
5. 谁会用基于directdraw的C++编一个简单的动画程序 跪求
DirectDraw编程
(1) #include "Direct.h"
// This macro releases the Direct Draw object safely
#define SAFE_RELEASE(p) if(p){(p)->Release(); (p) = NULL;}
// This macro deletes a pointer (not array) safely
#define SAFE_DELETE(p) if(p){delete (p); (p) = NULL;}
// Safe free
#define SAFE_FREE(p) if(p){free(p); (p) = NULL;}
// This macro emptys a RECT, and it doesn't check the validity of the pointer
#define EMPTY_RECT(p) {(p)->left = (p)->right = (p)->top = (p)->bottom = 0;}
CDirectDraw::CDirectDraw()
: m_lpDD( NULL ), m_lpDDSPrimary( NULL ), m_lpDDSBack( NULL ), m_hWnd( NULL ),
m_lpbi( NULL ), m_lMaxWidth( 0 ), m_lMaxHeight( 0 )
{
EMPTY_RECT( &m_rcDst );
EMPTY_RECT( &m_rcSrc );
memset(&m_img, 0, sizeof( m_img ));
m_img.unBpp = BPP_24;
}
CDirectDraw::~CDirectDraw()
{
SAFE_RELEASE( m_lpDDSBack );
SAFE_RELEASE( m_lpDDSPrimary );
SAFE_RELEASE( m_lpDD );
SAFE_FREE( m_lpbi );
}
6. 现在的游戏编程公司编写的2d游戏都是用direct3D编写的吗不用directdraw了
现在游戏公司一般2D都是用的direct3D,不过用的坐标还是2d
游戏开发一般用引擎!所以 那个不是很重要 主要是逻辑和算法
7. DirectDraw和Direct3D分别是什么意思
DirectDraw是微软发行的DirectX 软件开发工具箱(SDK)中的一部分。微软通过DirectDraw,为广大开发者提供了一个比GDI层次更高、功能更强、操作更有效、速度更快的应用程序图象引擎,与此同时,也努力使其保持了设备无关的优良特性。 DirectDraw是DirectX中的关于视频输入输出的基本部分,使用DirectDraw可以方便地编制出高效的视频处理程序,只要用户的硬件支持DirectDraw,就能保证你的代码可以处理它们。 DirectDraw主要提供了完成以下任务的工具: 管理多页面 ,直接访问视频RAM ,换页(Page flipping) ,后台缓存(Back buffering) ,管理调色板(Palette) ,裁剪(Clipping) ,视频端口(Video port)。 除此之外,DirectDraw允许开发者在应用程序运行期测定显示硬件的特性,然后,充分利用主机硬件设备的加速特性为用户提供可能的最优的显示速度和效果。 与DirectX其它组件一样,只要可能,DirectDraw就会最高程度的利用硬件执行某特定功能,并且让那些该硬件还不支持的特性也能用软件仿真的方式加以实现。设备无关性通常是通过硬件抽象层(HAL:Hardware abstraction layer)实现的。 DirectDraw是通过基于COM的接口提供服务。在DirectX 5.0版本中,这些接口分别是:IDirectDraw2、IDirectDrawSurface3、IDirectDrawPalette、IDirectDrawClipper和IDirectDrawVideoPort。DirectX的这些组件是向下兼容的,它们仍然支持旧版本中的所有功能。由微软公司所制定的3D规格界面,与Windows 95 和Windows NT操作系统兼容性好,可绕过图形显示接口(GDI)直接进行支持该API的各种硬件的底层操作,大大提高了游戏的运行速度。 Direct 3D是基于微软的通用对象模式COM(Common Object Mode)的3D图形API。它是由微软 Direct3D 界面
(Microsoft)一手树立的3D API规范,微软公司拥有该库版权,它所有的语法定义包含在微软提供的程序开发组件的帮助文件、源代码中。Direct3D是微软公司DirectX SDK集成开发包中的重要部分,适合多媒体、娱乐、即时3D动画等广泛和实用的3D图形计算。自1996年发布以来,Direct3D以其良好的硬件兼容性和友好的编程方式很快得到了广泛的认可,现在几乎所有的具有3D图形加速的主流显示卡都对Direct3D提供良好的支持。但它也有缺陷,由于是以COM接口形式提供的,所以较为复杂,稳定性差,另外,目前只在Windows平台上可用。★ Direct3D(简称:D3D)是微软公司在Microsoft Windows操作系统上所开发的一套3D绘图编程接口,是DirectX的一部份,目前广为各家显示卡所支援。与OpenGL同为电脑绘图软体和电脑游戏最常使用的两套绘图编程接口之一
8. delphi directshow和directdraw有什么区别
虽然两者都可以用来2D绘图,但差别还是很大的。
DirectDraw的功能上要远远大于GDI,因为DirectDraw多用于游戏开发,GDI或GDI+多用于软件开发。绘图功能就可想而知了。
而且GDI是用于Windows底层API作为基本绘图方法,比如Windows中的窗口都是GDI输出的,如果你学过SDK(API)编程的化,对此会很熟悉,比如你看看任务管理器的进程,几乎所有进程都需要加载一个重要的dll,那就是“gdi32.dll”.
而directdraw则多用于游戏中或媒体中,用于对图形操作更细腻的领域,当然目前更广泛的技术是Direct3D或OpenGL,当然directdraw也是DirectX中不可缺少的一部分。
总结一下。windows系统的绘图要求并不高,因此gdi是这里的老大,但对于专业的游戏或图形开发商,微软有创造了DirectX(其中包括directdraw)来满足他们的要求。