線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2485
推到 Plurk!
推到 Facebook!

有關在 BCB 或 Delphi 上編譯 DirectX 相關問題?

 
tenbao
一般會員


發表:8
回覆:4
積分:2
註冊:2002-05-29

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-06-21 16:11:48 IP:218.5.xxx.xxx 未訂閱
在 BCB 上使用 DirectShow 的方式編輯程式,但是!在編譯(Complier)過程中出現一些錯誤,這些錯誤經過我到 Microsoft 相關的新聞網站找答案,都無法找到相關的答案,也就是說!為了要開發出 DirectX 相關產品時,必須要轉為 VC 來編輯程式,因為 VC 真的很囉唆!不知道有哪一位仁兄可以指點一下在下呢?謝謝!
kynix
初階會員


發表:37
回覆:100
積分:37
註冊:2002-06-01

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-06-21 17:02:58 IP:61.225.xxx.xxx 未訂閱
不要再用M$的Directx SDK for bcb or delphi拉 用DelphiX來寫Directx 程式 比較好。而且它包裝M$的比 還不錯喔. 程式就是藝術,藝術就是生命,生命就是美
------
智慧是命運的征服者
tenbao
一般會員


發表:8
回覆:4
積分:2
註冊:2002-05-29

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-06-21 17:29:11 IP:218.5.xxx.xxx 未訂閱
引言: 不要再用M$的Directx SDK for bcb or delphi拉 用DelphiX來寫Directx 程式 比較好。而且它包裝M$的比 還不錯喔. 程式就是藝術,藝術就是生命,生命就是美
謝謝您的指點,但是!我不清楚您說的 DelphiX 在哪裡可以找的到呢?同時! DelphiX 是否可以取代 DirectX 呢?或是可以到哪裡找到 DelphiX 相關的範例呢?謝謝! 另外有一件事情,您上面說的「Directx SDK for bcb or delphi」,有這個工具嗎?哪裡可以找的到?我是否可以在哪一地方(htpp://.....)取得的到呢?謝謝!
kynix
初階會員


發表:37
回覆:100
積分:37
註冊:2002-06-01

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-06-21 21:26:40 IP:61.225.xxx.xxx 未訂閱
這可以下載 http://home.pchome.com.tw/art/jerrymba/download.htm 至於有關Delphix的資料實在蠻少的 And 我所謂"Directx SDK for bcb or delphi"是指用bcb或delphi直接用 directx sdk的意思,我英文蠻差的,見笑了 以下是一些有關的資料: Delphi作為一種方便的可視化程序設計語言,一直非常受大家喜愛。但它在圖形處理、3D表現等方面不很讓人滿意。如果說你要開發一個Windows95下的 3D遊戲,你會用什麼工具呢?DirectX!不少人會不加思索地答道。然而接觸過DirectX的朋友們都知道它內部的結構復雜,一般來說結合VC開發是一個理想 的組合。而要在Delphi中利用DirectX SDK真是難上 加難。但現在一切都好啦,有了本文介紹的DelphiX 組件,你終於可以用你熟悉的Delphi來開發漂亮的圖 形程序了。 DelphiX是由日本人Hiroyuki Hori開發的使Di rectX5.0在Delphi中更容易使用的一套控件,從網上下載時叫DelphiX.zip,837KB。解開後在bin目錄下 運行install_for?(根據你的Delphi版本號,支持3.0和 4.0),DelphiX會自動將控件安裝到你的Delphi中,幫助文件也自動融合到Delphi的幫助裡,真是好用極 了! DelphiX包括的控件有如下這些: TDXDraw 最重要的控件,是DirectDraw和Direct3D的基礎; TDXDIB 一個代表DIB圖像的控件; TDXImageList 代表一組 TPicture; TDX3D Direct3D控件,要與TDXDraw共同使用; TDXSound DirectSound控件; TDXWave 一個代表波形Wave的控件; TDXWaveList 一組Wave; TDXInput 輸入控制控件(操縱鍵盤和搖桿要靠它); TDXPlay 通訊控件; TDXSpriteEngine “精靈”引擎; TDXTimer 高速時間控件; TDXPaintbox TDXForm 專為DelphiX優化過的Form。 DirectDraw中重要的對象有: TDirectDraw對象 DirectDraw應用程序的核心,它是你創建的第一個對象。創建了DirectDraw對象後,可以在它的基礎上創建其它所有相關的對象。 在DelphiX中的TDXdraw.ddraw屬性即是一個Tdi rectDraw對象。 TDirectDrawSurface對象 表征了一塊內存區域,在該區域的數據將作為圖像顯示在屏幕上或移動到其它表面上。 TDirectDrawPalette對象 表征了一個用於表面 的16色或256色的索引調色板,它包含了一系列描述同表面相關的RGB顏色索引值。 TDirectDrawClipper對象 幫助你禁止向表面的 某一位置或超出表面的位置塊寫數據。 TSprite對象 代表了“精靈”,在許多視頻遊戲都使用了精靈。從最基本的意義上來講,一個精靈就是在屏幕上移動的圖像。精靈畫在一個表面上,覆蓋在已有的背景上,合成後的圖像被送到屏幕上顯示出 來,在DelphiX中通過TspriteEngine實現對Tsprite的控制。 TDirectDrawSurfaceCanvas對象 提供方便的 訪問機制,你可以像訪問一般Canvas對象一樣訪問 它。TDXDraw.Surface.Canvas即是這樣一個對象。 TdirectDrawDisplay對象 控制?DirectDraw的 顯示模式,TdxDraw.display是這樣一個對象。 DelphiX基本上嚴格按照Microsoft DirectX SDK 開發包來將其功能在Delphi中實現出來。所以,如果你對DirectX SDK比較熟悉的話,你會發現大多數程 序從C移植到Delphi是很容易的事。DelphiX中沒有提供幫助的地方,你可以在DirectX SDK中獲得答 案。 下面通過一個簡單的例子對如何利用DelphiX編程作一介紹,隻涉及Ddraw二維的一小部分。 unit Unit1; interface uses Windows.Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, DXClass, DXDraws, DIB; type TForm1=class(TDXForm) DXDraw1:TDXDraw; DXTimer1:TDXTimer; DXDIB1:TDXDIB; procedure DXDrawlFinalize(Sender:TObject); procedure DXDraw1Initialize(Sender:TObject); procedure DXDraw1RestoreSurfase(Sender:TObject); procedure DXTimer1Timer(Sendsr:TObject;LagCount:Integer); procedure FormActivate(Sender:TObject); private {Private declarations} public {Public declarations} private Fsurface:TDirectDrawSurface; end; var Form1:TForm1; x,y:integer; implementation {$R *.DFM} procedure TForm1.DXDrawlInitialize(Sender:TObject); begin FSurface:=TDirectDrawSurface.Create(DXDraw1.DDraw); {創建抽象圖像表面} end; procedure TForm1.DXDraw1Finalize(Sender:TObject); begin FSurface.Free; FSurface: = nil; {釋放表面} end; procedure TForm1.DXDraw1RestoreSurfare(Sender:TObject); begin FSurface.LoadfromGraphic(DXDIB1.DIB);{將位圖送入抽象表面} end; procedure TForm1.DXTimer1Timer(Sendsr.TObject;LagCount integer); begin if not DXDraw1.CanDraw then Exit;{在繪制之前檢驗是否允許} DXDraw1.Surfaca.Fill(0); x: = x 1; y: = y 1; DXDraw1.Surface.Draw(X, Y, FSurface.ClientRect,FSur face, True); DXDraw1.Flip; {將內存中的表面再將映射入實際顯存} end; procedure TForm1.FormActivate(Sender:TObject); begin X: =0; y: =0; end; end. 首先要在程序開頭包含DXClass、DXDraws兩個 Unit(TDXtimer、TDXForm在DXClass中定義,TDX Draw在DXDraws中定義)。程序用的Form不要從一 般的TForm派生,而應從TDXForm中派生。在Form 中放入TDXDraw控件和TDXTimer控件,將其inter val值設為0。對DXDraw1控件改變其屬性,使其與 Form大小一致。再放人一個TDXDIB控件,在其屬性 中的DIB一項調人一個位圖,如Windows下的bub bles.bmp。定義一個DirectDraw表面Fsurface,這是一個抽象內存表面,以後會將它映射到DXDraw對象的 Surface上。在DXDraw的Events一欄中編寫OnIni tialize、OnFinalize、OnRestoreSurface三個過程,之後便可以根據需要對表面進行操縱。 另外,要完成上面程序的功能,還有其他不少辦法。例如利用TDXImageList對象,可以用它的方法 Imagelist.items[N].draw來完成同樣功能。 程式就是藝術,藝術就是生命,生命就是美
------
智慧是命運的征服者
aip999
初階會員


發表:10
回覆:63
積分:44
註冊:2002-03-29

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-06-22 00:33:52 IP:210.201.xxx.xxx 未訂閱
引言: 在 BCB 上使用 DirectShow 的方式編輯程式,但是!在編譯(Complier)過程中出現一些錯誤,這些錯誤經過我到 Microsoft 相關的新聞網站找答案,都無法找到相關的答案,也就是說!為了要開發出 DirectX 相關產品時,必須要轉為 VC 來編輯程式,因為 VC 真的很囉唆!不知道有哪一位仁兄可以指點一下在下呢?謝謝!
到http://www.crazyentertainment.net/這邊看看吧
系統時間:2024-04-20 17:00:58
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!