紅藍眼鏡支援的stero渲染(立體眼鏡)

2021-08-24 22:24:56 字數 1670 閱讀 3979

似乎nvidia的顯示卡驅動就有這個選項。不知道怎麼做的。今天試了試自己寫的**。看上去的效果還湊合,就是需要比較長的時間適應。

最近沒時間,有時間寫個詳細的原理吧。

簡單說的就是。用兩個camera,兩個camera平行或者看著同乙個點。分別渲染到兩個rendertarget裡。

然後把兩個rt貼到顯示器上。

左眼的攝像機乾掉gb通道,右眼的乾掉r通道。

混合的shader看上去是這樣的:

samplerstate defaultsampler : register(s0);

texture2d diffusetexture : register(t0);

texture2d righteyetexture : register(t1);

struct ps_input

;float4 common_texture(float4 _color , float2 texcoord , samplerstate _sampler , texture2d _texture )

float4 cm_steroleft(float4 vdiffuse )

float4 cm_steroright(float4 vdiffuse )

float4 main( ps_input input) : sv_target

渲染的**看上去是這樣的。

void cevolenviroment::updateframe(long passedtime)

{m_prenderapi->pushrenderview(m_lvbackbuffer);

updateframe(passedtime , m_rendervisitor , m_pcamera );

m_prenderapi->poprenderview();

m_prenderapi->pushrenderview(m_rvbackbuffer);

updateframe(passedtime , m_rendervisitor , m_prightcamera );

m_prenderapi->poprenderview();

irendertarget* prtleft = dynamic_cast(m_lvbackbuffer->rendertarget(0));

irendertarget* prtright = dynamic_cast(m_rvbackbuffer->rendertarget(0));

igpuprogram* pgpuprogram = m_hsteroprogram.getresource();

m_prenderapi->setblendstate( m_prenderapi->createblendstate(l"alphablend") );

m_prenderapi->setgpuprogram( pgpuprogram );

m_prenderapi->settexture(texture_diffuse , prtleft->totexture() );

m_prenderapi->settexture(l"righteyetexture" , prtright->totexture() );

m_prenderapi->drawrectf( prtleft->totexture() , &destrect.x, cl);

m_prenderapi->swapbuffer();

模擬賽 紅藍牌

題目 明明有n張牌,正面按編號寫有數字1到n 每個數字只出現一次 每張牌的反面根據正面的數字塗上兩種顏色。如果正面的數字是質數,則為紅色,反之為藍色。明明的老師從這n張牌裡選出了一些,按數字從小到大排序後全部反面向上放成一行。他要明明判斷這些牌上的數字。輸入格式 第一行 乙個正整數n,1 n 100...

DP 概率 紅藍球

有 n 個紅球和 m 個藍球,a,b,c 三個人,輪流取球。若 a 取到紅球則 a 勝利,若 b 取到紅球則 b 勝利,c只負責取球搗亂,不參與勝負。若最後全部球取完後 a 沒有拿到紅球,則 b 勝利,求 a 勝利的概率。輸入 m,n 輸出 a 勝利的概率,保留 5 位小數 補零 樣例輸入 3 4 ...

紅和藍 題解 思維

其實比賽想到了一部分但是自己不知道怎麼去實現 直接copy隊友的 可以發現,樹的葉子節點肯定是與它的父親節點相匹配的,所以我們深搜一遍,從底層往上去模擬匹配的過程,對於以i為根節點的子樹,我們先將它的子子樹匹配好,如果 與 i 相鄰的兒子節點都有匹配關係,那麼說明 i 節點肯定要跟它的父親節點匹配,...