游戏开发论坛

 找回密码
 立即注册
搜索
查看: 6067|回复: 6

opengl 混合和绘制顺序问题

[复制链接]

1

主题

3

帖子

7

积分

新手上路

Rank: 1

积分
7
发表于 2009-6-3 15:09:00 | 显示全部楼层 |阅读模式
问题描述:用点画的方式绘制出一个立体模型,现要让该模型在任意角度观看时都有透明效果.目前采用glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA)方式混合,绘制过程存在一个显示列表中.显然这样的绘制方式受绘制顺序的影响,由远到近画是OK,但当视点转到背面后变成了由近到远画,显示出的东西就很别扭了.

尝试过每改变视点后计算每个体素点到视点的距离再重新对体素点由远到近排序.这样理论上是可以解决问题.但实际运行效率是不可接受的.目前即使是不用显示列表,每次转动都卡,再要加上计算每个点到视点距离的时间更加没法忍受了.

本人学习OPENGL不久,就大致翻了翻<<OPENGL编程指南第四版>>一书,里面只讲到OPENGL1.4.这里好象高手多.望那位高人指点指点.后面的版本里面有没有可以加入深度信息的混合方法.或是有什么其他的实现思路?先行谢过.

227

主题

1793

帖子

1866

积分

金牌会员

Rank: 6Rank: 6

积分
1866
发表于 2009-6-3 18:19:00 | 显示全部楼层

Re:opengl 混合和绘制顺序问题

OPENGL编程指南第四版里好像写了这个问题如何解决
就是把深度缓冲设为只独
不过这个方法也会有些问题
总之你先试试看再说
混合顺序这玩意一直都没什么好办法就是了

180

主题

3511

帖子

3520

积分

论坛元老

Rank: 8Rank: 8

积分
3520
发表于 2009-6-4 00:59:00 | 显示全部楼层

Re:opengl 混合和绘制顺序问题

未来会解决的。

2个透明物体先后无差别渲染方案:

如果当前要渲染的物体在原先物体的近处,就用glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA)方式混合。
如果当前要渲染的物体在原先物体的远处,就用glBlendFunc(GL_ONE_MINUS_DST_ALPHA,GL_DST_ALPHA)方式混合。

1

主题

3

帖子

7

积分

新手上路

Rank: 1

积分
7
 楼主| 发表于 2009-6-4 14:35:00 | 显示全部楼层

Re: Re:opengl 混合和绘制顺序问题

oz01: Repengl 混合和绘制顺序问题

OPENGL编程指南第四版里好像写了这个问题如何解决
就是把深度缓冲设为只独
不过这个方法也会有些问题
总之你先试试看再说
混合顺序这玩意一直都没什么好办法就是了

书里面确实有个关于解决绘制顺序问题的例子,里面讲的方法是用来解决场景中同时存在透明体和不透明体时,可在绘制透明物体时设置深度缓存为不可写。该方法是用来消除透明体和不透明体之间的绘制顺序问题的。而且该例子的视点是不动的。
我现在是要对整个模型混合,模型是由一个一个点组成的。不存在不透明物体。视点会以模型为球心在一个球面上任意移动,当然始终是朝向模型。

1

主题

3

帖子

7

积分

新手上路

Rank: 1

积分
7
 楼主| 发表于 2009-6-4 15:14:00 | 显示全部楼层

Re: Re:opengl 混合和绘制顺序问题

snhun: Repengl 混合和绘制顺序问题

未来会解决的。

2个透明物体先后无差别渲染方案:

如果当前要渲染的物体在原先物体的近处,就用glBle...

多谢提供了一个新思路,如果物体只有正面和反面两个面那这个方法可以很完美的解决了。
可惜现在我是要在空间的任意角度观察。每个点都有透明度,如果每个点算一个透明物体的话那是有N个物体了。

看到“未来会解决的“,看来是目前硬件那头还没有提供相应的功能了。后面更新那么多版本都没解决这个问题那就怪了。
个人感觉这个问题不难解决呀。只是在我们程序里实现效率太差了。

或者如果换用directX会不会好点?

34

主题

657

帖子

672

积分

高级会员

Rank: 4

积分
672
发表于 2009-6-15 11:51:00 | 显示全部楼层

Re:opengl 混合和绘制顺序问题

什么叫点画的方式?模型是由点构成不是由三角形构成吗。
你对点进行排序就行了,然后从远到近画。

59

主题

404

帖子

404

积分

中级会员

Rank: 3Rank: 3

积分
404
发表于 2009-6-24 15:46:00 | 显示全部楼层

Re:opengl 混合和绘制顺序问题

确实, 有句话说:"半透明的物体从远到进画; 不透明的物体从近到远画; 先画不透明物体, 再画透明物体"

只要符合了上诉规定, 在绘制上就没有什么大问题了

同时我也想问问, 3D里面除了这个问题, 还有什么其他地方需要注意的?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-19 21:46

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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