黄色app有哪些_男人女人爽爽视频_99久久狠狠丁香综合伊人_欧美久久久久久久久_亚洲一区二区三区日韩91

招賢納士網(wǎng)

DOS真彩色模式下真彩色圖像顯示技術(shù)(一)

發(fā)布于:08-17


?摘要?該文通過(guò)介紹Cirrus?GD5434卡等幾種高、真彩色卡
及其顯示模式,詳述了DOS環(huán)境下與硬件無(wú)關(guān)的VESA高彩色仿真真彩色、真彩色圖像全息顯示的一般性方法,還提示了24位PCX真彩色圖像解壓縮
快速顯示編程的要點(diǎn)。最后給出C語(yǔ)言編程示例。



一、高、真彩色顯示卡



近年來(lái),順應(yīng)CAD、CG及多媒體技術(shù)進(jìn)步的要求,許多彩色適配器板卡廠商先后推出性能價(jià)格比較高的一系列高彩色(High?Color)和真彩色(True?Color)SuperVGA顯示卡。如Trident?Microsystems公司的TGUI94XX、TGUI96XX,Cirrus?Logic的GD543X、GD544X,Tseng?Laboratories的ET4000,?ARK?Logic的ARK1000,、ARK2000,S3?Incorporated的?S3?86CXXX等等。它們除了繼續(xù)支持標(biāo)準(zhǔn)VGA模式外,都支持16色、256色、32K高彩色、64K高彩色及16.7M真彩色VESA?BIOS?擴(kuò)展模式,版本大多為VESA?1.2,?卡上具有32K、64K及16.7M?DAC,有16位ISA、32位VESA、32位?PCI總線(xiàn)等多種接口,顯示VRAM配置一般有1M、2M、4M,一般都帶有硬件加速的32位或64位圖形加速引擎(Graphics?Engine),滿(mǎn)足了當(dāng)今386~586各種檔次的PC機(jī)對(duì)更多色彩、更高分辨率的要求。



表1整理了市場(chǎng)上常見(jiàn)的GD5434(64位GUI)、TGUI9440AGi(32位GUI)和ARK2000PV(64位GUI)三種PCI總線(xiàn)高、真彩色顯示卡的OEM?BIOS調(diào)用模式號(hào)、色彩數(shù)、分辨率、VESA模式對(duì)照及其相應(yīng)的VRAM占用等數(shù)據(jù)。其他支持?VESA?1.2的顯示卡只要查閱卡附手冊(cè)得到OEM(原始設(shè)備制造商)自定義的高、真彩色模式號(hào)或其對(duì)應(yīng)的VESA模式號(hào)。有些配4M?VRAM的顯示卡甚至可支持1280×1024?16M色(VESA?1.2?11BH模式)。



表1



二、高、真彩色編程與256色編程的異同



高、真彩色模式編程在寫(xiě)視頻緩沖區(qū)端口索引號(hào)、頁(yè)切換方式、置模式號(hào)等方面類(lèi)同擴(kuò)展256色編程,例如,Trident的高、真彩色顯示卡,寫(xiě)視頻緩沖區(qū)端口索引號(hào)仍是(0x3C4,?0xE)和(0x3C5,?page^2),視頻窗口頁(yè)粒度仍是64,?頁(yè)切換方式仍是64K?頁(yè)、128K頁(yè)任選。不同點(diǎn)在于:高、真彩色模式已經(jīng)不再使用256組DAC寄存器索引號(hào)及調(diào)色板概念,而使用像素字長(zhǎng)的RGB?分量數(shù)據(jù)直接描述色彩及飽和度,寫(xiě)視頻緩沖區(qū)映射到VRAM后由新的64K?DAC或16M?DAC將色彩數(shù)據(jù)轉(zhuǎn)為模擬信號(hào)送多頻彩色顯示器,256?色編程中有關(guān)調(diào)色板的BIOS中斷全部失去作用;其次,由于用多個(gè)字節(jié)表示一個(gè)像素,高、真彩色DAC?轉(zhuǎn)換的時(shí)間成倍增加,顯示速度過(guò)分依賴(lài)卡上圖形引擎(Graphics?Engine)的效率,再加上數(shù)據(jù)成倍占用RAM或VRAM,所以顯示速度明顯慢于256色圖像顯示。



另外,不同廠商自定義的訪(fǎng)問(wèn)端口寄存器索引號(hào)的方式均各不相同,直接根據(jù)硬件特性的編程必然缺乏通用性。若按照這些顯示適配卡都支持的?VESA?(?VideoElectronics?Standards?Association)標(biāo)準(zhǔn)擴(kuò)展BIOS功能調(diào)用接口編程,從而實(shí)現(xiàn)軟件接口層次上的兼容性,所編程序便可在眾多的Super?VGA卡上運(yùn)行,有關(guān)?VESA編程的詳細(xì)資料請(qǐng)查閱有關(guān)書(shū)刊。



表2是高、真彩色像素的分量結(jié)構(gòu)示意,是理解高、真彩色圖像編程的關(guān)鍵。



表2



三、24位PCX圖像格式簡(jiǎn)介



24位PCX圖像的文件頭同16色、256色的一樣,共128字節(jié),?其中每個(gè)像素所用的彩色位數(shù)(bit-perpixel)值為8,彩色平面數(shù)(color-planes)值為3,?不再使用調(diào)色板。24位PCX圖像數(shù)據(jù)的存儲(chǔ)仍采用有限行程壓縮
法,但卻是把單個(gè)的RGB行作為三個(gè)位平面數(shù)據(jù)分別進(jìn)行壓縮
存放,第一個(gè)位平面由該行所有紅色像素組成;第二個(gè)位平面由該行所有綠色像素組成;第三個(gè)位平面由該行所有藍(lán)色像素組成,因?yàn)樾谐叹幋a方法并不是總能減小24位復(fù)雜圖像的大小,所以對(duì)24位PCX?文件進(jìn)行解碼得到的結(jié)果圖像比原來(lái)的小也屬正常。本文所用24?位PCX?文件格式符合PCPaintbrush?Version?5標(biāo)準(zhǔn),是從Photo?Styler?1.0的TIF圖例轉(zhuǎn)換的。



將上述解壓縮
的數(shù)據(jù)用于顯示時(shí),需按顯示卡硬件高、真彩色DAC送色彩信號(hào)的順序--紅綠藍(lán)紅綠藍(lán)......--重新組織,才能正確地顯示24位真彩色圖像。這一點(diǎn)是最不同于其他用三字節(jié)行程編碼的24位RGB真彩色圖像(如24位TGA)。其它格式24位的真彩色圖像文件只是圖像頭處理及解壓數(shù)據(jù)的方式不同,顯示的原理則完全相同。文后所附例程作適當(dāng)改變,就可用于24位TIF、24位BMP、24位TGA?等圖像文件的顯示。



下面就640X480分辨率介紹32K、64K高彩色、16M真彩色模式顯示24位PCX圖像。



四、32K、64K高彩色仿真16M真彩色編程



現(xiàn)成的64K色圖像很少,彩色掃描
儀掃出的多為256色或24位真彩色,?許多圖像處理軟件包的圖例也是同樣情形。這里只好用24位真彩色圖像經(jīng)下述圖示過(guò)程的位移合并,做成16位的64K高彩色像素字。這種取24位RGB分量高位的方法仿真顯示真彩色圖像,明亮部分的色彩層次能較好還原,低暗部分的色彩層次有微小損失,仿真效果很好。讀者也可根據(jù)需要作其他位的取舍(如舍兩頭留中間),以使色彩還原最小失真。







圖示中的空格為零。32K?高彩色仿真與此類(lèi)似,只需將綠色分量也右移3位,與紅色、藍(lán)色分量一道做成最高位為零,低15位有效的一個(gè)字,送視頻緩沖區(qū)便可。



具體編程要點(diǎn)如下:



1.調(diào)用VESA?BIOS?4f02H?號(hào)功能置高彩色圖形模式,成功后調(diào)用VESA?BIOS4f01H號(hào)功能返回每線(xiàn)字節(jié)數(shù)Line-bytes及窗口頁(yè)粒度Wingran等重要參數(shù);



2.讀圖像頭后直接讀圖像數(shù)據(jù),按上述方法轉(zhuǎn)換為一16位字后送視頻緩沖區(qū)始址A000:0000,每一像素一個(gè)字,每送一個(gè)字到視頻緩沖區(qū),地址偏移量加2;



3.640×480分辨率下每根掃描
線(xiàn)需1280字節(jié),為提高顯示速度,由Line-bytes預(yù)先算出每根掃描
線(xiàn)始址存于addr數(shù)組備查,由于滿(mǎn)屏需600K字節(jié),故編程上仍需考慮切換VRAM頁(yè)的情況。例程根據(jù)各種卡不同模式的窗口頁(yè)粒度Wingran值,調(diào)用VESA?BIOS?4f05H號(hào)功能訪(fǎng)問(wèn)硬件分頁(yè)寄存器實(shí)現(xiàn)64K頁(yè)模式切換(此時(shí)仍有一根掃描
線(xiàn)跨兩頁(yè)的情形);



4.顯示完畢,調(diào)用VESA?BIOS?4f02H?號(hào)功能置模式03H恢復(fù)原文本模式。



五、16M真彩色編程



真彩色編程的關(guān)鍵是要了解圖像數(shù)據(jù)的存放順序及解壓方法,其次注意讀圖像數(shù)據(jù)后按順序要求作轉(zhuǎn)換,否則圖像色彩失真。其余過(guò)程同高彩色模式。



具體編程要點(diǎn)如下:



1.調(diào)用VESA?BIOS?4F02H號(hào)中斷置真彩色圖形模式;成功后調(diào)用VESA?BIOS4F01H號(hào)功能,返回每線(xiàn)字節(jié)數(shù)Line-bytes及窗口頁(yè)粒度Wingran等重要參數(shù);



2.讀圖像文件頭后直接讀圖像數(shù)據(jù),解壓縮
后按紅綠藍(lán)順序送視頻緩沖區(qū)始址A000:0000,每一像素三字節(jié),每送一像素到視頻緩沖區(qū),地址偏移量加3;



3.在VESA?112H模式(640×480?16.7M?Color)下,不同顯示適配卡的每線(xiàn)字節(jié)數(shù)是不一樣的,?如ARK2000PV?為1920,?GD5434及TGUI9440為2048,S3?86C868為2560,?但由于使用VESA編程,?4F01H號(hào)功能能準(zhǔn)確返回每線(xiàn)字節(jié)Line-bytes?值,?并預(yù)先算出每條掃描
線(xiàn)始址存于addr數(shù)組,可提高顯示速度,由于滿(mǎn)屏需900K以上字節(jié),故編程上仍需考慮切換VRAM頁(yè)的情況,換頁(yè)機(jī)制同64K色情形;



4.有些裝2M?VRAM的適配卡,?可在640×480?16.7M色情況下使用32位快速格式,如S3?86C868的112H模式及GD5434的76H模式,?每線(xiàn)字節(jié)為2560,?此時(shí)解壓縮
后按紅綠藍(lán)及一零字節(jié)順序送視頻緩沖區(qū)始址?A000:0000,每一像素4字節(jié),每送一像素到視頻緩沖區(qū),地址偏移量加4,類(lèi)似特殊情況,例程照此稍作修改便可;



5.顯示完畢,調(diào)用VESA?BIOS?4F02H號(hào)功能置模式03H,恢復(fù)原文本模式。


聲明:本站部分內(nèi)容來(lái)源于網(wǎng)絡(luò),本站僅提供信息存儲(chǔ),版權(quán)歸原作者所有,不承擔(dān)相關(guān)法律責(zé)任,不代表本站的觀點(diǎn)和立場(chǎng),如有侵權(quán)請(qǐng)聯(lián)系刪除。
閱讀 118