opengl ftransform

 主场景模型用的是固定管线来渲染阴影效果,把主场景模型的一部分做了二次渲染,来实现反射效果,用的是glsl4.3的shader,运行发现二次渲染的部分总是抖动,后来分析可能是固定管线和可编程管线在这部分计算顶点的坐标有误差导致的,然后把发射效果的shader中顶点坐标计算改成了内置函数 gl_Position = ftransform();

 

参考:

自己执行变换的另一种方式是使用内置函数ftransform,它对需要处理的顶点模拟了固定功能管线的顶点变换。这在混合固定功能和顶点着色器绘制同一个几何图形时很有用,可以防止Z值的细微差异导致的Z-fighting。

https://my.oschina.net/sweetdark/blog/214220

 

gl_Position =gl_ModelViewProjectionMatrix * gl_Vertex;

能够获得和固定功能流水线相同的结果吗?理论上是如此,但实际上对顶点变换操作的顺序可能会不同。顶点变换通常在显卡中是高度优化的任务,所以有一个利用了这种优化的特定函数用来处理这个任务。这个神奇的函数如下:

vec4 ftransform();

使用这个函数的另一个原因是float数据类型的精度限制。由于数据精度的限制,当使用不同的顺序计算时,可能得到不同的结果,因此GLSL提供这个函数保证获得最佳性能的同时,还能得到与固定功能流水线相同的结果。

https://blog.csdn.net/racehorse/article/details/6638455

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值