红蓝眼镜支持的stero渲染(立体眼镜)
似乎NVIDIA的显卡驱动就有这个选项。不知道怎么做的。今天试了试自己写的代码。看上去的效果还凑合,就是需要比较长的时间适应。
最近没时间,有时间写个详细的原理吧。
简单说的就是。用两个Camera,两个Camera平行或者看着同一个点。分别渲染到两个RenderTarget里。
然后把两个RT贴到显示器上。
左眼的摄像机干掉gb通道,右眼的干掉r通道。
混合的Shader看上去是这样的:
SamplerState DefaultSampler : register(s0);
Texture2D DiffuseTexture : register(t0);
Texture2D RightEyeTexture : register(t1);
struct PS_INPUT
{
float4 Pos : SV_POSITION;
float4 Tex : TEXCOORD0;
float4 Tex1 : TEXCOORD1;
float4 Color : COLOR;
};
float4 COMMON_Texture(float4 _Color , float2 texCoord , SamplerState _sampler , Texture2D _texture )
{
return _texture.Sample(_sampler, texCoord.xy) * _Color ;
}
float4 CM_SteroLeft(float4 vDiffuse )
{
return float4(vDiffuse.x , 0 , 0 , vDiffuse.w);
}
float4 CM_SteroRight(float4 vDiffuse )
{
return float4(0 , vDiffuse.y , vDiffuse.z , vDiffuse.w);
}
float4 main( PS_INPUT input) : SV_Target
{
float4 vDiffuse = input.Color ;
float4 lColor = DiffuseTexture.Sample(DefaultSampler, input.Tex.xy);
lColor = CM_SteroLeft(lColor);
float4 rColor = RightEyeTexture.Sample(DefaultSampler, input.Tex.xy);
rColor = CM_SteroRight(rColor);
vDiffuse = lColor ;
vDiffuse.x += rColor.x;
vDiffuse.y += rColor.y;
vDiffuse.z += rColor.z;
return vDiffuse;
}
渲染的代码看上去是这样的。
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();
//===================
m_pRenderApi->applyCamera(m_p2DCamera);
m_pRenderApi->identityMatrix(MATRIXMODE_World);
m_pRenderApi->setDepthStencilState(m_pStencilState);
int w = 0; int h = 0;
m_pRenderApi->getRenderViewSize(w , h );
xvec4 destRect(0,0,w,h);
xvec4 srcRect(0,0,256,256);
xColor_4f cl(1.0f,1.0f,1.0f,1.0f);
IRenderTarget* pRTLeft = dynamic_cast<IRenderTarget*>(m_LVBackBuffer->renderTarget(0));
IRenderTarget* pRTRight = dynamic_cast<IRenderTarget*>(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();
}
红蓝眼镜支持的stero渲染(立体眼镜)相关推荐
- 制作立体图像(上):红蓝眼镜原理
立体眼镜分为色差式.偏光式等几种 其中色差式还可以再分为红-蓝.红-绿.红-青等,是最简单,但也是效果最差的一种 这里仅介绍常见的红蓝立体图像 这种方式仅需要一块红蓝眼镜,淘宝上买个很便宜的就可以了, ...
- Alternativa3D也可以!3D立体效果(需要红蓝眼镜)
看flare3D之黄河星球demo,提起我的兴趣.故我就用我较熟悉之Alternativa3D实现一下.就用这个方法实现了.贴代码瞧瞧 package {import alternativa.engi ...
- 如何制作红蓝3d电影(详细教程)
自20世纪初以来,电影制作人一直试图通过制作3D电影来利用我们的双眼.现在,由于大量相对实惠的3D电视,你可以享受电影院以外的额外空间 - 你自己拍摄的视频. 对于大预算的电影,电影摄影师使用两个相连 ...
- 用红蓝3D眼镜在PC上观看3D影片效果并不好
如题,最近试了一下买了副红蓝分色3D眼镜.结果戴上以后放3D蓝光盘只有在画面的静态部分才能正确融像,画面上的物体一动起来马上两个像就不能正确融合,而是红色部分和蓝色部分直接混在一起闪来闪去.网上找了一 ...
- 【图文教程】用“iz3d”软件将您的游戏打造为红蓝3D游戏。
iz3d是一款能将普通3D游戏转换为红蓝3D游戏的软件.基本上支持所有游戏,或许没用过的人会认为这只是类似于播放器中的一个小功能,将平面图形做成"伪3D"红蓝效果. 实际上不是的, ...
- 红蓝对抗 linux内网渗透
目录 一.前言 二.提权 2.1 利用内核漏洞进行提权 2.2 利用文件权限配置不当进行提权 2.3 利用SUID程序进行提权 三.隧道 3.1 SSH 3.2 nc/ncat 3.3 portmap ...
- 【网络安全】红蓝攻防:shellcode的分析
前言 在做红蓝攻防时,常常要用到cs.msf等工具,使用工具生成shellcode或可执行程序,那么小小的shellcode为何能做这么多事情,拿到shellcode后又该怎么分析.希望这篇文章能给大 ...
- c++游戏代码坦克大作战_一红一蓝多种模式的双人小游戏:红蓝大作战
作者有话说:上次推荐的森林冰火人很多小伙伴后台找我要链接,或者搜索不到:首先声明下森林冰火人.同桌大作战都不是辣椒人游戏工作室研发的,小编也是微信小游戏双人栏目下搜索到的,如果想要玩双人小游戏的可以打 ...
- PHP+jQuery+MySql实现红蓝投票功能
这是一个非常实用的投票实例,应用在双方观点对抗投票场景.用户可以选择支持代表自己观点的一方进行投票,本文以红蓝双方投票为例,通过前后台交互,直观展示红蓝双方投票数和所占比例,应用非常广泛. 查看演示 ...
最新文章
- LINUX TOP,不是这样玩地!!!
- AI可以在游戏里称霸,但是解决现实问题太难了
- webserver介绍与实现(利用各模块的封装实现)
- PHP模板引擎smarty详细介绍
- 如何让Win7不再弹出升级Win10的提醒窗口
- innodb启动失败无法重启的处理方法
- Linux内核CPU负载均衡机制
- 如何在H264数据中获取PTS?
- xenapp6.5 浏览器首次登录插件下载问题解决
- R统计-PCA/PCoA/db-RDA/NMDS/CA/CCA/DCA等排序分析教程
- NPDP是什么考试?产品经理必知
- 复联3观影指南丨漫威宇宙里的AI黑科技
- 七夕给男朋友送什么礼物好、七夕男朋友礼物清单
- PHP全栈学习笔记7
- 误删除与误格式化的挽回(图)
- GameObject.Find()能否查找隐藏属性的游戏对象?
- Ghost超级应用技巧集锦
- 机器学习(1):绪论
- 什么叫h5项目_对移动端h5项目的一点总结
- 如何激励你的内容团队产出更好的创意
热门文章
- Vue3全局挂载方法
- 怎样在iPhone或iPad上的“查找我”中设置AirTag?
- swift学习五天 项目实战-知乎日报之网络交互NSURLConnection
- ABLIC推出“S-5701 B系列”TMR传感器IC,不但可以解决磁簧开关的局限性,而且具有耐用、小巧和寿命长的特点
- 区块链:Grid+ 电力市场 101
- 旅游去哪儿--大数据生成旅游的热点图
- 读《Fusion of Partition Local Binary Patterns and Convolutional Neural Networks for Dorsal Hand Vein 》
- PPT配色中国风——长安十二时辰
- NovelAI:AI作画二次元、续写故事,画师要失业?
- c语言 高频字母统计,C语言高频词 - 在线打字测试(dazi.kukuw.com)