位置: 编程技术 - 正文

OpenGL ES 设置透明度不能【双面透明】的问题解决办法(opengl es2)

编辑:rootadmin

推荐整理分享OpenGL ES 设置透明度不能【双面透明】的问题解决办法(opengl es2),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:opengl透明,opengl透视,opengl透明,opengl es教程,opengl es视频教程,opengl es教程,opengl opengl es,opengl透视,内容如对您有帮助,希望把文章链接给更多的朋友!

立方体的面和圆柱体都是有颜色的,所以在内部的圆柱体就不能被看到,只能设置立方体透明。

效果图:

放大图:

之前的代码实现是半透明的,从一侧能看到另一侧,另一侧就不能看透。

在public void onSurfaceCreated(GL gl, EGLConfig config)中的代码如下:

关于透明度的设置,参考了别人的文章:OpenGL ES 设置透明度不能【双面透明】的问题解决办法(opengl es2)

原文地址: 中可以通过 blend (混色) 来简单实现,混色的基本原理就是把要绘制的物体的颜色与屏幕上已经绘制好的颜色以一定比例来混合,最后的颜色看上去就像半透明一样。

要使用混合先要通过 glEnable 函数来启用

?1glEnable(GL.GL_BLEND);

然后通过 glBlendFunc 来设置下要使用的混合方法

?1glBlendFunc(sfactor, dfactor);

sfactor 及 dfactor 分别代表源和目标颜色在混合时所占比重的枚举常量。其中 sfactor 可取&#;包括:GL_ZERO, GL_ONE, GL_DST_COLOR, GL_ONE_MINUS_DST_COLOR, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_DST_ALPHA, GL_ONE_MINUS_DST_ALPHA, GL_SRC_ALPHA_SATURATE ; 而 dfactor 可取&#;包括:GL_ZERO, GL_ONE, GL_SRC_COLOR, GL_ONE_MINUS_SRC_COLOR, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_DST_ALPHA, GL_ONE_MINUS_DST_ALPHA。

所以有这样的设置:

glBlendFunc(GL_ONE, GL_ONE); 即源与目标颜色的RGBA分别相加。

glBlendFunc(GL_ONE, GL_ZERO); 即只取源颜色,这也是默认&#;。

glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); 是比较典型的半透明效果,如果源色 alpha 为0,则取目标色,如果源色alpha为1,则取源色,否则视源色的alpha大小各取一部分。源色的alpha越大,则源色取的越多,最终结果源色的表现更强;源色的alpha越小,则目标色“透过”的越多。

此外在一般的渲染过程中,都会把有半透明效果的渲染放到后边,先把不透明的部分在深度测试启用的情况下渲染完, 再关闭深度测试写入(glDepthMask(false)),并渲染半透明的部分。这样就不会出现由于半透明且离镜头近的面被先渲染时污染深度缓冲了。

于是,我觉得找到了方式,把代码修改如下,成功是实现双面透明效果:

好吧,效果图就如大家看到的那样,大家可以自己测试!

Windows下的OpenGL编程进行简单介绍 第一步,选择一个编译环境现在Windows系统的主流编译环境有VisualStudio,BrolandCBuilder,Dev-C等,它们都是支持OpenGL的。我选择VisualStudio和VC6作为学习Open

在MSVC中使用freeglut代替glut 使用MSVC时,需要手动配置glut.h,glut.dll和glut.lib文件。这个帖子介绍说glut已经老掉牙了。点击打开链接GLUTisverydatednowandnotactivelysupported-soyoushouldcertainl

我的第二个opengl程序 今天做了第二个opengl程序,其实是照抄书上的列子,然后加深理解,代码反正是书上的,这个就不解释了,主要是理解了画曲线需要定义A*XB,A为需要显

标签: opengl es2

本文链接地址:https://www.jiuchutong.com/biancheng/369658.html 转载请保留说明!

上一篇:3D网络游戏开发学习书籍概览(3d网络游戏开发方法)

下一篇:Windows下的OpenGL编程进行简单介绍(Windows下的写字板功能是)

  • 收取承包费如何交税
  • 增值税一般纳税人税率是多少?
  • 医院要交什么费用
  • 契税完税凭证是不是契税发票
  • 商贸企业出口进项税会计分录汇总
  • 年末结转净利润
  • 公司房租只有房租租赁协议无发票怎么入账
  • 房地产企业增值税收入确认时间
  • 所得税汇算清缴后发现有误怎么办
  • 农产品抵扣计算题
  • 不是小微企业的小规模纳税人的税收优惠
  • 广告制作可以开什么发票
  • 企业的银行存款
  • 房地产开发企业增值税税率
  • 可交换债券与可转换债券的区别在于
  • 城建税和教育费附加计入什么科目
  • 定额发票去年的能用吗
  • 买牛奶的公司会计怎么做账
  • 城镇土地使用税减免税政策
  • 餐费发票怎么开
  • 企业已交地税税金如何做账务处理?
  • 宿舍管理制度规定心得体会范文
  • 个体工商户季度申报报税流程
  • 个人开票给公司个人所得税怎么扣
  • 税款申报成功但没有缴款怎么办
  • php preg_quote
  • php数组函数输出《咏雪》里有多少"片"字
  • 固定资产原值和账务账套原值不平
  • 设置浏览器显示网络异常
  • 我国关税税则设有
  • 待处理流动资产净损失在资产负债表中
  • 机票报销属于什么费
  • 线性判别分析LDA医学
  • bert数据增强
  • 命令行mkdir创建文件夹
  • 月末制造费用转入生产成本,因此期末账户一定无余额吗?
  • 企业单方面调整员工的工作岗位
  • 怎么开电子专用增值税发票
  • mysql怎么处理特殊字符数据
  • 总结帝国cms内容是什么
  • 纳统全称
  • 高铁票的电子发票
  • 印花税怎么交税率是多少
  • sql server 2016 sp3
  • sql 集合运算符
  • 跨年银行回单怎么入账
  • 持有至到期投资减值准备可以转回吗
  • 车船使用税和印花税谁交
  • 房地产企业沙盘模拟
  • 跨年发票应该如何处理
  • 去年应收账款下账错误怎么调整
  • 应付账款周转率越大说明什么
  • 结转完工入库产品成本的会计分录
  • 租赁合同的印花税的计税依据
  • 销项负数发票开了需要给对方重开发票吗?
  • 承兑汇票可以买卖吗?
  • 实收资本的主要用途
  • 原始凭证留存几年
  • 被征用的不动产或者动产使用后应当怎样
  • win2玩魔兽世界
  • linux网卡lo
  • pb程序是什么
  • win7如何打开windows功能
  • win10事件查看器好多错误
  • linux无法使用ls
  • 搜狗浏览器2019版本
  • cocos2d schedule
  • unity3drpg游戏教程
  • Python HTTP客户端自定义Cookie实现实例
  • nodejs模块有哪些
  • python从入门到精通
  • javascript的代码写在哪里
  • 简单的设计模式
  • python 入门
  • 12123人工咨询电话
  • 山东省立第三医院地址
  • 通用申报表水利基金怎么填
  • 乌市社保缴费一个月多少钱
  • 财政云操作视频
  • 税务局残保金征收工作汇报
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设