游戏开发论坛

 找回密码
 立即注册
搜索
查看: 7542|回复: 23

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

[复制链接]

96

主题

529

帖子

539

积分

高级会员

Rank: 4

积分
539
发表于 2005-2-19 18:00:00 | 显示全部楼层 |阅读模式
glBlendFunc(a,b); a为后绘制的物体的融合因子,b为先绘制的物体的融合因子。
这两个参数很糟糕,其实应该是这样的才更好:
a为深度值小的物体的融合因子,b为深度值大的物体的融合因子。

如果采用第二种接口,OPENGL开发者在处理透明效果时就可以不必强制性地被要求先绘制远的物体,后绘制近的物体。

而非常遗憾地是OPENGL采用的是第一种接口。
这样,在处理透明化时,总是要先绘制远的物体,再绘制近的物体,才能得到正确的透明效果,强制性地要求要使用透明效果的开发者先进行深度预测,再按预测的顺序来绘制,这明显是开发代码时间上的和程序运行速度时间上的浪费!这对于程序员而言是件很痛苦的事。

17

主题

454

帖子

470

积分

中级会员

Rank: 3Rank: 3

积分
470
发表于 2005-2-19 19:41:00 | 显示全部楼层

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

不光是GL ,D3D也是这样的。
当然,你这样的想法很有特点....

96

主题

529

帖子

539

积分

高级会员

Rank: 4

积分
539
 楼主| 发表于 2005-2-19 20:00:00 | 显示全部楼层

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

深度值和融合因子根本没有联系,这确实是一个遗憾。

96

主题

529

帖子

539

积分

高级会员

Rank: 4

积分
539
 楼主| 发表于 2005-2-19 20:04:00 | 显示全部楼层

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

OGL和D3D应该建立一个深度融合因子,这样3D透明物体做起来就非常方便了,而且速度也会更快。怎么这么好的功能都没有考虑到。

17

主题

454

帖子

470

积分

中级会员

Rank: 3Rank: 3

积分
470
发表于 2005-2-19 20:44:00 | 显示全部楼层

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

但是你觉得有办法结合起来吗?反正我是没想到过.

96

主题

529

帖子

539

积分

高级会员

Rank: 4

积分
539
 楼主| 发表于 2005-2-19 20:49:00 | 显示全部楼层

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

当然可以,只要OPENGL检查深度值,然后用融合因子公式不就行了?这个根本没任何技术问题,也不需要什么硬件支持。


我举个例子:一个立方体,这个立方体六个面每个面的中心是个太阳,面的太阳部分不透明,其他部分透明。再在这个立方体中间放一个不透明的小立方体,你要怎么实现这效果呢?如果没有深度测试和融合因子挂上钩,那就需要动用其他模板,并且进行一系列的深度预测,极为麻烦,即时渲染这样的场景几乎是不可能的。

如果深度跟融合因子有关,根本就不需要再编写任何其他代码。即时渲染这样的场景就很轻松了。

这不需要硬件支持,所以不是软件可不可能实现的问题,这当然技术上讲绝对可以实现,但是目前D3D和OGL都没实现,这不得不说是欠考虑。

17

主题

454

帖子

470

积分

中级会员

Rank: 3Rank: 3

积分
470
发表于 2005-2-19 20:54:00 | 显示全部楼层

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

怎么不可能,先绘制不透明,再绘制半透明的,不就可以了。绘制半透明物体的时候,深度测试都打开,深度写入关闭.

96

主题

529

帖子

539

积分

高级会员

Rank: 4

积分
539
 楼主| 发表于 2005-2-19 21:10:00 | 显示全部楼层

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

晕,我怎么没想到,真是太笨了,谢谢指点

我一直没想到OGL还有个关闭深度写入的接口函数glDepthMask,因为很少用,根本没想到,呵呵。

17

主题

454

帖子

470

积分

中级会员

Rank: 3Rank: 3

积分
470
发表于 2005-2-19 21:36:00 | 显示全部楼层

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

呵呵。我的引擎就是完全用Fix Pipeline的。 这方面现在关心的人比较少了。还是要加强基础啊

22

主题

274

帖子

274

积分

中级会员

Rank: 3Rank: 3

积分
274
发表于 2005-2-20 18:01:00 | 显示全部楼层

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

多个半透明物体呢?
最终不还是要按距离排序?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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