国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Direct3D融合技術(shù)

這篇具有很好參考價值的文章主要介紹了Direct3D融合技術(shù)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

該技術(shù)能使我們將當前要進行光柵化的像素的顏色與先前已已光柵化并處于同一位置的像素的顏色進行合成,即將正在處理的圖元顏色值與存儲在后臺緩存中的像素顏色值進行合成(混合),利用該技術(shù)我們可得到各種各樣的效果,尤其是透明效果。

在融合運算時需要遵循:首先繪制那些不需要進行融合的物體,然后將需要進行融合的物體按照相對于攝像機的深度值進行排序,如果物體已處于觀察坐標系中,該運算的效率會相當高,因為此時只需要對Z分量進行排序,最后按照自后往前的順序逐個繪制將要進行融合運算的物體。

融合處理公式

Direct3D融合技術(shù),3d學習,3d

這個公式中每個變量都是一個4D顏色向量(r,g,b,a),中間符號表示分量逐個相乘

OutpurPixel:融合后的顏色值
SourcePixel:當前計算得到的、用于與后臺緩存中對應像素進行融合的像素顏色值
SourceBlendFactor:源融合因子,指定了源像素的顏色值在融合中所占比例,該值在區(qū)間[0,1]
DestPixel:當前處于后臺緩存中的像素顏色值
DestBlendFactor:目標融合因子,指定了目標像素的顏色值在融合中所占的比例,該值在區(qū)間[0,1]內(nèi)

源融合因子和目標融合因子使我們可以各種方式修改源像素和目標像素的顏色值,從而獲得各種不同的效果,Direct3D中默認狀態(tài)下是禁止融合運算的,可將繪制狀態(tài)D3DRS_ALPHABLENDENABLE設為true便啟用了融合運算,融合計算的開銷并不低,所以應該僅在必需的場合中使用,當繪制完需要進行融合的幾何體之后,應禁止Alpha融合,在對三角形單元組進行融合時,最好進行批處理,之后應立即繪制出來,這樣就可避免在每幀圖像中都啟用了禁止融合運算。

Device->SetRenderState(D3DRS_ALPHABLENDENABLE, true);

//融合運算  Draw...

Device->SetRenderState(D3DRS_ALPHABLENDENABLE, false);

融合因子

可通過設置繪制狀態(tài)D3DRS_SRCBLENDD3DRS_DESTBLEND的值來對源融合因子和目標融合因子分別進行設定。

//Source、Destination  填D3DBLEND枚舉
Device->SetRenderState(D3DRS_SRCBLEND, Source);
Device->SetRenderState(D3DRS_DESTBLEND, Destination);

透明度

每個頂點顏色中的Alpha分量與顏色值類似,都是沿著三角形到單元表面漸變的,但它并非用于確定某像素的顏色值,而是用于確定像素的Alpha分量,Alpha分量主要用于指定像素的透明度,假定為每個像素的Alpha分量保留8位,則合法區(qū)間為[0,255],Alpha為0時元素完全透明,為255則完全不透明,為了能使Alpha分量來描述像素的透明度,必須將融合因子和目標融合因子分辨設置為D3DBLEND_SRCALPHAD3DBLEND_INVSRCALPHA,這些值恰好也是融合因子的默認值。

Alpha通道

我們并不直接使用計算得到Alpha分量,而往往是從紋理的Alpha通道中獲取Alpha信息,Alpha通道是保留給存儲了Alpha分量的紋理元的一個額外的位集合,當紋理映射到某個圖元中時,Alpha通道中的Alpha分量也進行了映射,并成為了該圖元中像素的Alpha分量。

指定Alpha來源

默認狀態(tài)下,如果當前設置的紋理擁有一個Alpha通道,Alpha值就取自該Alpha通道,如果沒有Alpha通道,Alpha值就取自頂點的顏色,也可以用下列繪制狀態(tài)來指定Alpha值的來源(漫反射顏色值或Alpha通道)

//漫反射顏色值
Device->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_DIFFUSE);
Device->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1);

//紋理的Alpha通道
Device->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
Device->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1);

用DirectX Texture Tool創(chuàng)建Alpha通道

最常見的圖像文件格式中不含有Alpha信息,可以用DirectX紋理工具創(chuàng)建一個具有Alpha通道的DDS文件,DDS文件是一種專門為DirectX應用程序和紋理設計的圖像格式??墒褂肈3DXCreateTextureFromFile函數(shù)將DDS文件加載到紋理中。

使用該工具打開圖片后會自動加載為24位的RGB紋理(紅、綠、藍分量各占8位),如果想擴展為32位的ARGB格式的紋理,選擇菜單中Format然后選擇Change Surface Format命令,選擇A8R8G8B8格式并確定就創(chuàng)建了一幅像素顏色深度為32位的圖像,接下來的任務是將數(shù)據(jù)加載到Alpha通道中,選擇菜單File,然后選擇Open Onto Alpha Channel Of This Texture命令,找到要加載到該Alpha通道的數(shù)據(jù)的圖像文件后就完成在Alpha通道作用下的紋理圖了,保存后命名為xxx.dds文章來源地址http://www.zghlxwxcb.cn/news/detail-731418.html

到了這里,關(guān)于Direct3D融合技術(shù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • Direct3D 12——燈光——光照模型的概述

    Direct3D 12——燈光——光照模型的概述

    將之前所述的所有光照內(nèi)容都結(jié)合起來,即表面反射的光量相當于環(huán)境反射光、漫反射光以及 鏡面反射光的光量總和。 1.環(huán)境光 C a :模擬經(jīng)表面反射的間接光量。 2.漫反射光 C d :對進入介質(zhì)內(nèi)部,又經(jīng)過表面下吸收而最終散射岀表面的光進行模擬。由于對表 面下的散射光

    2023年04月16日
    瀏覽(22)
  • Direct3D 12——計算著色器——計算著色器概念

    Direct3D 12——計算著色器——計算著色器概念

    計算著色器雖然是一種可編程的著色器,但Direct3D并沒有將它直接歸為渲染流水線中的一部分。雖然如此,但位于流水線之外的計算著色器卻可以讀寫GPU資源。從本質(zhì)上來說,計算著 色器能夠使我們訪問GPU來實現(xiàn)數(shù)據(jù)并行算法,而不必渲染出任何圖形。由于計算著色器是Dir

    2024年02月03日
    瀏覽(22)
  • Character Animation With Direct3D 讀書筆記

    2D動畫:循環(huán)播放多張圖片 3D動畫: 骨骼動畫、變形動畫 Win32 應用程序 Application類:處理主程序循環(huán),圖形設備的初始化 Init:加載資源并創(chuàng)建圖形設備 Update:更新游戲世界,移動對象,更新物理引擎 Render:渲染所有對象,并將結(jié)果呈現(xiàn)給屏幕 Quit Cleanup DirectX 渲染循環(huán):

    2024年02月12日
    瀏覽(21)
  • d3d12龍書閱讀----Direct3D的初始化

    使用d3d我們可以對gpu進行控制與編程,以硬件加速的方式來完成3d場景的渲染,d3d層與硬件驅(qū)動會將相應的代碼轉(zhuǎn)換成gpu可以執(zhí)行的機器指令,與之前的版本相比,d3d12大大減少了cpu的開銷,同時也改進了對多線程的支持,但是使用的api也更加復雜。 接下來,我們將先介紹在

    2024年03月12日
    瀏覽(19)
  • 三維引擎基礎(chǔ)概述(Direct3D、OpenGL、UE、U3D、threejs等)

    三維引擎基礎(chǔ)概述(Direct3D、OpenGL、UE、U3D、threejs等)

    一般而言,三維引擎是在三維底層圖形技術(shù)的基礎(chǔ)上,封裝硬件操作與三維圖形算法,形成普遍意義上的三維交互引擎,提供給開發(fā)者一個簡單易用、功能豐富的三維圖形環(huán)境,在此基礎(chǔ)上進行虛擬現(xiàn)實、三維交互、可視化管理平臺二次開發(fā)等,極大提高開發(fā)效率。 【底層圖

    2024年02月11日
    瀏覽(32)
  • web3D三維引擎(Direct3D、OpenGL、UE、U3D、threejs)基礎(chǔ)掃盲

    web3D三維引擎(Direct3D、OpenGL、UE、U3D、threejs)基礎(chǔ)掃盲

    三維引擎是指用于創(chuàng)建和渲染三維圖形的軟件框架。它們通常提供了圖形處理、物理模擬、光照、碰撞檢測等功能,幫助開發(fā)者構(gòu)建逼真的三維場景和交互體驗。在這里,我將為您詳細介紹一些常見的三維引擎,包括Direct3D、OpenGL、Unreal Engine、Unity3D和Three.js。 Direct3D是由微軟

    2024年02月11日
    瀏覽(22)
  • DirectX12_Windows_GameDevelop_3:Direct3D的初始化

    DirectX12_Windows_GameDevelop_3:Direct3D的初始化

    查看龍書時發(fā)現(xiàn), 第四章介紹預備知識的代碼不太利于學習 。因為它不像是LearnOpenGL那樣從頭開始一步一步教你敲代碼,導致你沒有一種整體感。 如果你把它當作某一塊的代碼進行學習,你跟著敲會發(fā)現(xiàn),總有幾個變量是沒有定義的。這是因為書上的代碼都是把框架里的某

    2024年02月08日
    瀏覽(28)
  • 【C/C++】使用C++和Direct3D (d3d)獲取屏幕截圖并根據(jù)傳入分辨率進行縮放圖片大小

    【C/C++】使用C++和Direct3D (d3d)獲取屏幕截圖并根據(jù)傳入分辨率進行縮放圖片大小

    目錄 一,函數(shù)清單 1.Direct3DCreate9?函數(shù) 2.IDirect3D9::CreateDevice 方法 3.IDirect3DDevice9::GetDisplayMode?方法 4.IDirect3DDevice9::CreateOffscreenPlainSurface?方法 5.IDirect3DDevice9::GetFrontBufferData?方法 6.IDirect3DDevice9::D3DXLoadSurfaceFromSurface 方法 7.?D3DXSaveSurfaceToFile 函數(shù) 二,關(guān)鍵代碼實現(xiàn) 三,最終實現(xiàn)

    2024年01月18日
    瀏覽(30)
  • 在direct3D中,透明度處理和D2D1_ALPHA_MODE_PREMULTIPLIED含義?

    D2D1_ALPHA_MODE_PREMULTIPLIED 是 Direct2D 中定義的一種 Alpha 模式,用于描述像素顏色值和其 Alpha 通道(透明度)之間的關(guān)系。 在非預乘 Alpha (Straight or Unpremultiplied Alpha) 圖像中,每個顏色分量(紅、綠、藍)是獨立于 Alpha 值的。而在預乘 Alpha 圖像中,每個顏色分量已經(jīng)被其對應的

    2024年01月25日
    瀏覽(27)
  • direct3d-msaa-抗鋸齒算法-教程-涉及概念解析

    交換鏈(Swap Chain)在計算機圖形學和窗口系統(tǒng)中是一個核心概念,它主要用于管理一組緩沖區(qū)(通常是幀緩沖區(qū)),這些緩沖區(qū)用于存儲渲染的圖像,并且有序地與屏幕顯示進行交替更新。 窗口系統(tǒng)中的交換鏈: 在Windows、Linux等操作系統(tǒng)上的窗口環(huán)境中,交換鏈與圖形API(

    2024年01月24日
    瀏覽(17)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包