opengl 读取png图直接显示

wangpeng2011314 2012-11-13 05:29:44
opengl 怎么读取png图直接显示,而不是什么贴纹理。可以实现吗?谁能给个小例子。libpng的开发环境都已经配置好了,实验成功了网上找的一个贴纹理的例子。谁知道怎么直接显示而不是贴纹理?
...全文
962 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
ljl578040826 2013-05-09
  • 打赏
  • 举报
回复
你好,我有个需求和你的一样,但是我新手,不知道怎么去处理,能不能把你的这个例子给我参考下。谢谢 我的邮箱是liangjianlin126@126.com
wangpeng2011314 2012-11-16
  • 打赏
  • 举报
回复
问题解决了,原来混合模式设置成 glBlendFunc(GL_DST_COLOR,GL_ZERO);这个就可以了!
wangpeng2011314 2012-11-16
  • 打赏
  • 举报
回复
引用 24 楼 sniffer12345 的回复:
引用 23 楼 wangpeng2011314 的回复:引用 22 楼 sniffer12345 的回复:引用 21 楼 wangpeng2011314 的回复:引用 20 楼 sniffer12345 的回复:引用 19 楼 wangpeng2011314 的回复:引用 18 楼 ri_aje 的回复:引用 17 楼 wangpeng2011314 的回复:引用 16 ……
用了啊,要不然设置混合模式干嘛?
sniffer12345 2012-11-15
  • 打赏
  • 举报
回复
引用 21 楼 wangpeng2011314 的回复:
引用 20 楼 sniffer12345 的回复:引用 19 楼 wangpeng2011314 的回复:引用 18 楼 ri_aje 的回复:引用 17 楼 wangpeng2011314 的回复:引用 16 楼 sniffer12345 的回复:引用 15 楼 wangpeng2011314 的回复:引用 14 楼 qingcairousi 的回复:要在屏幕上显示多大……
当然可以
sniffer12345 2012-11-15
  • 打赏
  • 举报
回复
引用 15 楼 wangpeng2011314 的回复:
引用 14 楼 qingcairousi 的回复:要在屏幕上显示多大的图像,每行多少个像素,有多少行确定了吧?每个像素的格式也确定了吧? PNG图片里面,每个像素点的RGBA值你也知道了吧?图片的尺寸你也知道了吧? 另外OpenGL如果我没弄错的话,是以顶点为操作的基准点的,如果你的顶点透明了,那么你映射到这个顶点上的纹理自然也就透明了。所以问题在于,你为什么需要一个……
png是压缩过的,opengl操作的是位图信息,你必须将png解压缩成位图后才能给opengl用。
wangpeng2011314 2012-11-15
  • 打赏
  • 举报
回复
引用 20 楼 sniffer12345 的回复:
引用 19 楼 wangpeng2011314 的回复:引用 18 楼 ri_aje 的回复:引用 17 楼 wangpeng2011314 的回复:引用 16 楼 sniffer12345 的回复:引用 15 楼 wangpeng2011314 的回复:引用 14 楼 qingcairousi 的回复:要在屏幕上显示多大的图像,每行多少个像素,有多少行确定了吧?每个像素……
假如在场景里已经事先画上去一些东西,启用混合模式还可以做到让叠加上去的多边形透明吗?
sniffer12345 2012-11-15
  • 打赏
  • 举报
回复
引用 19 楼 wangpeng2011314 的回复:
引用 18 楼 ri_aje 的回复:引用 17 楼 wangpeng2011314 的回复:引用 16 楼 sniffer12345 的回复:引用 15 楼 wangpeng2011314 的回复:引用 14 楼 qingcairousi 的回复:要在屏幕上显示多大的图像,每行多少个像素,有多少行确定了吧?每个像素的格式也确定了吧? PNG图片里面,每个像素点的RGB……
设置混合模式 glBlendFunc(GL_ONE,GL_DST_ALPHA)
wangpeng2011314 2012-11-15
  • 打赏
  • 举报
回复
引用 18 楼 ri_aje 的回复:
引用 17 楼 wangpeng2011314 的回复:引用 16 楼 sniffer12345 的回复:引用 15 楼 wangpeng2011314 的回复:引用 14 楼 qingcairousi 的回复:要在屏幕上显示多大的图像,每行多少个像素,有多少行确定了吧?每个像素的格式也确定了吧? PNG图片里面,每个像素点的RGBA值你也知道了吧?图片的尺寸你也知道了……
要显示透明的部分,各个参数怎么设置
ri_aje 2012-11-15
  • 打赏
  • 举报
回复
引用 17 楼 wangpeng2011314 的回复:
引用 16 楼 sniffer12345 的回复:引用 15 楼 wangpeng2011314 的回复:引用 14 楼 qingcairousi 的回复:要在屏幕上显示多大的图像,每行多少个像素,有多少行确定了吧?每个像素的格式也确定了吧? PNG图片里面,每个像素点的RGBA值你也知道了吧?图片的尺寸你也知道了吧? 另外OpenGL如果我没弄错的话,是以顶点为操作……
说了 n 遍了,gldrawpixels.
wangpeng2011314 2012-11-15
  • 打赏
  • 举报
回复
引用 16 楼 sniffer12345 的回复:
引用 15 楼 wangpeng2011314 的回复:引用 14 楼 qingcairousi 的回复:要在屏幕上显示多大的图像,每行多少个像素,有多少行确定了吧?每个像素的格式也确定了吧? PNG图片里面,每个像素点的RGBA值你也知道了吧?图片的尺寸你也知道了吧? 另外OpenGL如果我没弄错的话,是以顶点为操作的基准点的,如果你的顶点透明了,那么你映射到这个顶……
现在已经解压缩成功了,每个点的信息存放在一个char类型的数组里,调用什么函数来显示这个图?
sniffer12345 2012-11-15
  • 打赏
  • 举报
回复
引用 23 楼 wangpeng2011314 的回复:
引用 22 楼 sniffer12345 的回复:引用 21 楼 wangpeng2011314 的回复:引用 20 楼 sniffer12345 的回复:引用 19 楼 wangpeng2011314 的回复:引用 18 楼 ri_aje 的回复:引用 17 楼 wangpeng2011314 的回复:引用 16 楼 sniffer12345 的回复:引用 15 楼 w……
有没有启用纹理影射? 看看这个文章吧 http://wenku.baidu.com/view/9cc4561ea76e58fafab00339.html
wangpeng2011314 2012-11-15
  • 打赏
  • 举报
回复
引用 22 楼 sniffer12345 的回复:
引用 21 楼 wangpeng2011314 的回复:引用 20 楼 sniffer12345 的回复:引用 19 楼 wangpeng2011314 的回复:引用 18 楼 ri_aje 的回复:引用 17 楼 wangpeng2011314 的回复:引用 16 楼 sniffer12345 的回复:引用 15 楼 wangpeng2011314 的回复:引用 14 ……
为什么我glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); 这么设之后没效果?我没调用glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);应该不会是这个关系吧?不能调用啊,调用了把之前画的都给清了啊
wangpeng2011314 2012-11-14
  • 打赏
  • 举报
回复
引用 7 楼 ri_aje 的回复:
引用 6 楼 wangpeng2011314 的回复:被纹理映射的四边形怎么让他的颜色是透明的啊 ? 引用 4 楼 ri_aje 的回复:glDrawPixels 直接往当前 frame buffer 里写数据,应该能满足楼主的要求。 gldrawpixels 不需要经过纹理映射,它直接写入 gl 显示缓存。我看你主楼的意思不就是不借助纹理映射直接显示吗。 ……
刚才找到设置纹理的颜色为透明的方法了。发现即使这样也不行,纹理也会跟着透明,起不到我要的效果。还是得跟标题里说的一样,要找不要什么纹理,直接显示png图的方法!蛋疼啊
wangpeng2011314 2012-11-14
  • 打赏
  • 举报
回复
引用 7 楼 ri_aje 的回复:
引用 6 楼 wangpeng2011314 的回复:被纹理映射的四边形怎么让他的颜色是透明的啊 ? 引用 4 楼 ri_aje 的回复:glDrawPixels 直接往当前 frame buffer 里写数据,应该能满足楼主的要求。 gldrawpixels 不需要经过纹理映射,它直接写入 gl 显示缓存。我看你主楼的意思不就是不借助纹理映射直接显示吗。 ……
gldrawpixels 好像不能操作png图吧
wangpeng2011314 2012-11-14
  • 打赏
  • 举报
回复
引用 7 楼 ri_aje 的回复:
引用 6 楼 wangpeng2011314 的回复:被纹理映射的四边形怎么让他的颜色是透明的啊 ? 引用 4 楼 ri_aje 的回复:glDrawPixels 直接往当前 frame buffer 里写数据,应该能满足楼主的要求。 gldrawpixels 不需要经过纹理映射,它直接写入 gl 显示缓存。我看你主楼的意思不就是不借助纹理映射直接显示吗。 ……
现在想通过设置被纹理映射的四边形为透明来解决了
ri_aje 2012-11-14
  • 打赏
  • 举报
回复
引用 6 楼 wangpeng2011314 的回复:
被纹理映射的四边形怎么让他的颜色是透明的啊 ? 引用 4 楼 ri_aje 的回复:glDrawPixels 直接往当前 frame buffer 里写数据,应该能满足楼主的要求。
gldrawpixels 不需要经过纹理映射,它直接写入 gl 显示缓存。我看你主楼的意思不就是不借助纹理映射直接显示吗。
wangpeng2011314 2012-11-14
  • 打赏
  • 举报
回复
被纹理映射的四边形怎么让他的颜色是透明的啊 ?
引用 4 楼 ri_aje 的回复:
glDrawPixels 直接往当前 frame buffer 里写数据,应该能满足楼主的要求。
sniffer12345 2012-11-14
  • 打赏
  • 举报
回复
glBindTexture
ri_aje 2012-11-14
  • 打赏
  • 举报
回复
glDrawPixels 直接往当前 frame buffer 里写数据,应该能满足楼主的要求。
jiandingzhe 2012-11-14
  • 打赏
  • 举报
回复
opengl有一套函数是直接往屏幕上贴位图的,使用屏幕坐标系,但我很久不用,已经忘干净了。
加载更多回复(7)

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧