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)來滿足他們的要求。