常见的几种图片格式中只有png格式和gif格式的图片会有透明效果,其他图片格式都会使用白色作为底色。下面是使用OSG实现png纹理透明效果的代码,使用gif格式的图片也可以,注意:图片必须首先有透明的部分。

#pragma comment(lib, "osg.lib")
#pragma comment(lib, "osgDB.lib")
#pragma comment(lib, "osgViewer.lib")#include  "osgViewer/Viewer"
#include  "osgDB/ReadFile"
#include  "osg/Node"
#include "osg/Shape"
#include "osg/Geode"
#include "osg/ShapeDrawable"
#include <osg/Texture2D>int main(){//初始化视景器osg::ref_ptr<osgViewer::Viewer> viewer=new osgViewer::Viewer;//初始化场景根节点osg::ref_ptr<osg::Group> root=new osg::Group;//创建几何体osg::ref_ptr<osg::Geode> geode=new osg::Geode();osg::ref_ptr<osg::Geometry> geometry = new osg::Geometry();geode->addDrawable(geometry);//将数据加入视景器中root->addChild(geode);viewer->setSceneData(root);//光照模式关闭,这样从各个方向看到的图片才是一样的geode->getOrCreateStateSet()->setMode(GL_LIGHTING,osg::StateAttribute::OFF);//指定几何体的顶点坐标osg::ref_ptr<osg::Vec3Array> v = new osg::Vec3Array();v->push_back(osg::Vec3(-1.0, 0.0, -1.0));v->push_back(osg::Vec3(1.0, 0.0, -1.0));v->push_back(osg::Vec3(1.0, 0.0, 1.0));v->push_back(osg::Vec3(-1.0, 0.0, 1.0));geometry->setVertexArray(v.get());//指定几何体的法向量坐标osg::ref_ptr<osg::Vec3Array> normal = new osg::Vec3Array;normal->push_back(osg::Y_AXIS);geometry->setNormalArray(normal.get());geometry->setNormalBinding(osg::Geometry::BIND_OVERALL);//指定几何体的纹理坐标osg::ref_ptr<osg::Vec2Array> tcoords = new osg::Vec2Array();tcoords->push_back(osg::Vec2(0.0f,0.0f));tcoords->push_back(osg::Vec2(1.0f,0.0f));tcoords->push_back(osg::Vec2(1.0f,1.0f));tcoords->push_back(osg::Vec2(0.0f,1.0f));geometry->setTexCoordArray(0, tcoords.get());//使用图元绘制几何体geometry->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::QUADS, 0, 4));//贴纹理,这里使用png格式或gif格式的透明图片都可以,但是只能是这两种格式,因为只有这两种格式的图片才可以实现透明osg::ref_ptr<osg::Texture2D> texture=new osg::Texture2D;//osg::ref_ptr<osg::Image> image=osgDB::readImageFile("forestWall.png");osg::ref_ptr<osg::Image> image=osgDB::readImageFile("zhen.gif");texture->setImage(image);geometry->getOrCreateStateSet()->setTextureAttributeAndModes(0, texture, osg::StateAttribute::ON);//要想看到png图片的透明效果,需要开启混合模式geometry->getOrCreateStateSet()->setMode(GL_BLEND,osg::StateAttribute::ON);geometry->getOrCreateStateSet()->setRenderingHint(osg::StateSet::TRANSPARENT_BIN);return viewer->run();
}

运行效果截图:

这样图片透明的部分便不会显示了。

源代码下载:下载地址

OSG中使用png图片显示透明效果相关推荐

  1. python画图为什么运行不出来_PyCharm中Matplotlib绘图不能显示UI效果的问题解决

    问题描述 我们利用了Matplotlib的类Cursor,向图形添加一组纵横交叉的直线,从而实现图形界面中任何位置的数值定位的可视化效果. 但使用PyCharm,绘图结果在右侧的部分: 这固然是需要绘 ...

  2. 怎么在ppt上设置文字滑动的效果html,PPT 中如何设置图片滚动切换效果

    我们经常在工作中使用PPT办公软件,在网页上也经常看到一组图片水平滚动或者垂直滚动的效果,你知道PPT 中如何设置图片滚动切换效果吗?今天小编就教一下大家使用PPT 中如何设置图片滚动切换效果. 首先 ...

  3. html图片红叉,html 中的本地图片显示红叉.路径没问题

    html 中的本地图片显示红叉.路径没问题0 My trip around the usa on a segway Segway'n USA Documenting my trip around th ...

  4. nuxt.js中的静态图片显示不出来解决方法

    nuxt.js中的静态图片显示不出来解决方法 <script> export default {data() {return {imgList: [{ name: "图1&quo ...

  5. CSS实现PNG图片背景透明效果

    使用PNG图片作背景,但ie6不能显示PNG透明效果,所以要用AlphaImageLoader滤镜来实现. 在CSS文件中要注意图片相对路径:滤镜中的图片路径是相对页面文件,而其它的则是相对CSS文件 ...

  6. 图片没有透明效果html,为什么png不是透明底

    为什么把图片保存成PNG格式 背景依旧不能透明? 我把图片部分透明化之后存图,在PS中能够清楚地看到透明区域,但一保存为P你不管它在电脑里怎么样 在电脑里是看不出来透明的 要上传到网上才有效果 存为p ...

  7. vue base64图片不显示_技巧 | word中插入的图片显示不完整怎么办?

    已经好久没有更新了,都快忘记有这个公众号存在了~ 这几个月发生了很多事情,工作上的任务也迟迟没有减轻,之前保持的日记也已经很久没有写了.但是觉得要是没有什么用什么方式将脑袋中时不时飘过的念头记录下来的 ...

  8. emwin从外部flash中读取bmp图片显示

    在emwin中有提供了一个从外部读取图片数据进行显示的函数,如下: 而且提供了官方例程,不过官方历程中从外部读取是从外部文件系统中进行读取的bmp图片进行显示,官方例程如下 /* ********** ...

  9. php悬浮图片,在JS中如何实现图片居中悬浮效果

    这篇文章给大家分享的是通过JS实现图片垂直居中悬浮,不跟随滚动条飘动的效果,有兴趣的朋友跟着学习下吧. 这篇文章我们是用JS实现一个图片悬浮的效果,在我们用鼠标下拉滚动的时候图片居中悬浮,不跟随滚动, ...

最新文章

  1. 关于中台,你可能不知道的那些事
  2. Flutter Widget
  3. X.509证书的介绍
  4. 网工必看,万字网络排错笔记
  5. 安装android sdk,后出现导出错误,提示命令行找不到解决方案
  6. python sql语句生成_python Django 生成sql语句
  7. python字典的建立和输出_字典的创建和使用
  8. 可缺一台洗衣机的ykcchf
  9. sqlmap使用方法
  10. windows server 2008 r2 x64 enterprise service pack1中aspjpeg.dll安装
  11. SDH 同步数字系列
  12. 如不指定存储类型c语言,总结C语言的五种存储类型
  13. 红番茄(VS2017)两个注意点
  14. vue改页面顶部浏览器标题栏图标、名称和地址栏详细教程
  15. mysql 嵌套查询多表_MySql嵌套查询+关联查询+多表查询+对应案例 超详细,一看就会!!!...
  16. 《2015年中国公有云服务发展报告》跋
  17. arcsinx用计算机怎么按,数学arcsinx和arccosx怎么用公 – 手机爱问
  18. 组台式计算机配置清单整套,组装台式电脑配置清单有哪些 台式电脑什么配置好...
  19. GPIO接口-引脚对照
  20. 移动开发者如何获取免费流量

热门文章

  1. 运营技巧|要如何提升用户留存率?
  2. 盈高入网规范管理平台linux,入网引导测试和修复测试
  3. Chrome播放视频时只有声音没有画面
  4. java英语介绍_java自我介绍英语口语
  5. 返利机器人源码php,RebateBot:非常棒的返利机器人 基于 golang+vue+android-xposed
  6. 大数据之数据清洗之爬取数据后如何根据地名或者公司名获取经纬度信息-地址逆解析经纬度
  7. 计算机主机核心通常包括,2017年计算机一级复习试题及答案解析
  8. {__ob__: observer}取值报错问题
  9. 明日书苑:书法用笔挫笔、疾涩、接笔、搭锋、裹锋、平铺、筑锋、过
  10. Python 类的定制