位置: 编程技术 - 正文
推荐整理分享关于混合(Blend)和浮点纹理的一件小事(关于混合基金投资风险以下表述正确的是),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:关于混合型基金投资风险,以下表述,关于混合的叙述不正确的是,关于混合基金,下列说法错误的是( ),关于混合云下列说法哪项是不正确的,关于混合的叙述正确的是,关于混合型基金投资风险以下表述正确的是,关于混合加压站先混合后加压的配置方式描述正确的是,关于混合云下列说法哪项是不正确的,内容如对您有帮助,希望把文章链接给更多的朋友!
最近在写一个系统仿真程序,需要尽可能真实地模拟人因瞳孔而产生的聚焦效果。我不知道游戏里的景深效果一般是怎么做的,不过猜测应该是使用深度缓冲加模糊特效吧,但是我这里是不能这么用的。
于是就打算在瞳孔上采样若干点,对应这些点产生若干相机,最后将图像叠加的做法。也就是glLookAt里前三个参数根据瞳孔采样位置改变;中间三个参数,也就是对焦点不变:
这样子,只要程序中调节focus的位置,就能对焦到不同的位置上。于是建立一个FBO,用于得到单个采样点的渲染画面,渲染到纹理。然后循环采样次数,每次用glBlend来对采样点得到的画面进行混合:
用glBlendColor来计算一个平均的透明度,然后用GL_CONSTANT_ALPHA和GL_ONE的组合。实现每画一张FBO纹理就将这张纹理按屏幕大小叠到原有画面上去。但是问题出现了。当采样点比较少时可能看不出来,但是采样点一多,比方说个,颜色就变得很奇怪,过渡变得不均匀。想了想,应该是这么算透明度时,由于颜色是级整数,在计算过程中除不尽的小数都被抹掉了,导致了误差累积。次叠加之后,实际上画面颜色只有/=5级了。
一开始不知道怎么办,甚至想把所有采样点都建一个纹理,用多重纹理扔到glsl里去算。但是想想,要是我想设几百个采样点呢?
于是想到了浮点纹理。在建立用于FBO渲染的纹理时,用到的一句glTexImage2D函数,函数的第三个参数internalformat,之前从来都只是设成GL_RGBA,没细想过其作用。皆因显示器的位色正好对应了GL_RGBA,这么设置本来没什么问题。但是对于我现在这种情况,需要对像素进行细分时,8位的精度根本不够,因此需要换成浮点数,以得到更准确的结果。
于是可以将这个参数从GL_RGBA换成GL_RGBAF甚至GL_RGBAF。这样纹理在GPU内部就以0~1的位或者位浮点数的形式储存,进行像素运算时更为准确。
用Quadro卡带Geforce卡实现非SLI多显卡多显示器协同绘制 核弹厂为了卖显卡真是无所不用其极。当然人家号称Geforce就是用来玩游戏的,Quadro才适合更高端的工作。可是如果我只是用来做三维场景绘制,你Quadro
OpenGL编程逐步深入(四)Shaders OpenGl中的Shader在一些中文书籍或资料中都被翻译为着色器,单从字面意思也看不出Shader到底是什么,Shader实际上就是一段代码,用于完成特定功能的一个
OpenGL--纹理贴图基础 理论基础纹理贴图:通俗地讲就是可以把我们读取的纹理加载到图元表面的一种技术,这样大大的提高了图像的表现质量。实例代码//读取tga格式图片/*t
友情链接: 武汉网站建设