游戏开发论坛

 找回密码
 立即注册
搜索
123
返回列表 发新帖
楼主: bluefire9213

OpenGL的融合接口实在太糟糕了

[复制链接]

3

主题

56

帖子

56

积分

注册会员

Rank: 2

积分
56
发表于 2005-2-22 14:02:00 | 显示全部楼层

Re: OpenGL的融合接口实在太糟糕了

即使按你这样做,也不解决问题啊。

比如有如下的场景:


  1.         A    B    C
  2. 视线    |    |    |
  3. =====>  |    |    |
  4.         |    |    |
  5.        0.5  0.3  1.0
复制代码

A,B,C是三个半透明的物体,下面标注的是各自的透明度(alpha值)

按照你的方法设置深度blend模式为:
glDepthBlend( GL_FRONT_ALPHA, GL_ONE_MINUS_FRONT_ALPHA);
也就是:frontcolor * frontalpha + backcolor * (1-frontalpha)

按照C,B,A的顺序绘制,最终的颜色是:
(B*0.3+C*0.7)*0.5 + A*0.5

按照C,A,B的顺序绘制,结果是:
(A*0.5+C*0.5)*0.5 + B*0.5

不同的渲染顺序还是会产生不同的结果。

96

主题

529

帖子

539

积分

高级会员

Rank: 4

积分
539
 楼主| 发表于 2005-2-22 16:26:00 | 显示全部楼层

Re: Re: OpenGL的融合接口实在太糟糕了

你说得有道理。
不过相比之下,多数情况下,还是按照深度来融合更好。

chenlee: Re: OpenGL的融合接口实在太糟糕了

即使按你这样做,也不解决问题啊。

比如有如下的场景:

[code]
        A    B    C
视线    |    ...

17

主题

454

帖子

470

积分

中级会员

Rank: 3Rank: 3

积分
470
发表于 2005-2-22 17:26:00 | 显示全部楼层

Re:OpenGL的融合接口实在太糟糕了

然后按渲染状态分类.半透明物体最后渲染,而且距离排序,
出来的效果基本上是正常的。

1

主题

60

帖子

70

积分

注册会员

Rank: 2

积分
70
发表于 2005-2-23 21:27:00 | 显示全部楼层

Re:OpenGL的融合接口实在太糟糕了

试了一下,效率确实很低。



您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-24 11:07

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表