多重纹理贴图的变种问题

Arthur_Tina 2010-01-01 03:57:41
大家好!新年快乐!
最近碰到一个让人非常郁闷的问题。别的不说,先来看问题吧,有两个正方形,其中一个包含于另一个中,记大的为A,小的为B,然后分别往这两个正方形中贴纹理,现在出现的现象是B的纹理遮住了A的纹理中的一部分,这并不是我想要的结果,我需要的是这两个纹理都能显示出来以致于看起来二者构成一个完整的东西。个人看法是多重纹理不好解决这个问题,因为这两个正方形的大小不同,如果采用纹理子图像,那么当B旋转时,这个方法又会失效。所以大家谁有更好的想法么?谢谢大家了。
...全文
99 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Arthur_Tina 2010-01-18
  • 打赏
  • 举报
回复
总结一下吧。首先是采用Alpha混合,但是如果纹理图像没有alpha通道,就得手动加上一个通道;其次是alpha通道的取值,如果是背景,取值为0,如果为前景,取值为255,注意这是在生成纹理时做的处理;再次启用混合,并且混合函数为glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA),这样就可以达到两个纹理同时显示。
xingzhe2001 2010-01-15
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 hjfyyy 的回复:]
引用 5 楼 xingzhe2001 的回复:
你可以绘制的时候把depth test禁用掉。

如果关闭,将只能看到一个纹理。
[/Quote]

先画大的再画小的
yuanlin2008 2010-01-15
  • 打赏
  • 举报
回复
其实你说的这个功能在一般的3D engine中叫做decal系统,就是在任意模型上面附加一层任意纹理。
要实现这样的功能:
1.要自己保证渲染的次序,A先画,B后画
2.在画B时,将depth test和depth write关掉
liuchacha 2010-01-15
  • 打赏
  • 举报
回复
alpha混合啊
Arthur_Tina 2010-01-04
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 xingzhe2001 的回复:]
两个正方形的位置是怎样的
[/Quote]
就是小的正方形在大的正方形里面,包含与被包含的关系,注意是同一平面。
Arthur_Tina 2010-01-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zhangci226 的回复:]
一个贴在另一个前面肯定要挡住一个啊

楼主是什么意思
[/Quote]
对,像你说的那样,是挡住了,可是有什么方法让这两个纹理同时显示出来呢?
Arthur_Tina 2010-01-04
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 xingzhe2001 的回复:]
你可以绘制的时候把depth test禁用掉。
[/Quote]
如果关闭,将只能看到一个纹理。
xingzhe2001 2010-01-04
  • 打赏
  • 举报
回复
两个正方形的位置是怎样的
xingzhe2001 2010-01-04
  • 打赏
  • 举报
回复
你可以绘制的时候把depth test禁用掉。
张赐 2010-01-02
  • 打赏
  • 举报
回复
一个贴在另一个前面肯定要挡住一个啊

楼主是什么意思

4,446

社区成员

发帖
与我相关
我的任务
社区描述
图形图像/机器视觉
社区管理员
  • 机器视觉
  • 迪菲赫尔曼
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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