学习笔记:多重纹理
来源:互联网 发布:外贸建站seo 编辑:程序博客网 时间:2024/05/03 01:42
学习笔记:多重纹理
(2009-09-01 14:20:52)多重纹理
多重纹理就是在渲染一个多边形的时候可以用到多张纹理图.把多张纹理图进行一些颜色的操作,可以达到一些效果.但是多重纹理必须是在显卡支持的情况下.但是还有一种多次渲染.可以替代多重纹理,但是这样做的话,速度会很慢.
多重纹理的相关代码如下:
//设置第一张纹理
多次渲染可以得到相同的结果.代码如下:
//设置第一个纹理
具体效果如下:
原始的图1:,原始的图2:,混合后的:;
多重纹理的操作类型
多重纹理的操作类型,
D3DTOP_DISABLE:使一个纹理阶段不管用,自己的理解.
D3DTOP_SELECTARG1 & D3DTOP_SELECTARG2:选择第一个和第2个纹理,用来混合.
D3DTOP_MODULATE:把两个纹理的颜色进行乘法运算,final=tex1*tex2;
D3DTOP_MODULATE2X:把两个纹理的颜色进行乘法运算,然后乘2来提高亮度,final=(tex1*tex2)<<1;
D3DTOP_MODULATE4X:把两个纹理的颜色进行乘法运算,然后乘4来提高亮度,final=(tex1*tex2)<<2;
D3DTOP_ADD:把两个纹理的颜色进行加法运算,得到的图象会变亮,final=tex1+tex2;
D3DTOP_ADDSIGNED:final=tex1+tex2-0.5,得到的效果是第2张图片的黑的地方边的更暗,而白地方边的更亮
D3DTOP_ADDSIGNED2X:在上面的基础上,把图片放亮,final=(tex1+tex2+0.5)<<1;
D3DTOP_SUBTRACT:把第一个纹理的亮度,根据第2个纹理来降低,final=tex1-tex2;
D3DTOP_BLENDDIFFUSEALPHA:用顶点上的透明值来线形混合纹理,final=tex1*alpha+tex2*(1-alpha);
D3DTOP_BLENDTEXTUREALPHA:用纹理的透明值来混合纹理
D3DTOP_BLENDFACTORALPHA:用纹理因子来混合
D3DTOP_BLENDTEXTUREALPHAPM:final=tex1*tex2(1-alpha);
D3DTOP_BLENDCURRENTALPHA:用上一张纹理的透明来混合.
D3DTOP_MODULATEALPHA_ADDCOLOR:final=tex1+tex1a*tex2;
D3DTOP_MODULATEINVALPHA_ADDCOLOR:final=tex1+(1-tex1a)*tex2.
/////////////////////////////////////////////////////////////
黑暗映射:用到是D3DTOP_MODULATE;
混合纹理与材质慢反射颜色:这个效果,是用慢反射的到的颜色,来混合纹理颜色.具体代码如下,
Device->SetTextureStageState(0,D3DTSS_COLORARG1,D3DTA_TEXTURE);
Device->SetTextureStageState(0,D3DTSS_COLORARG2,D3DTA_DIFFUSE);
Device->SetTextureStageState(0,D3DTSS_COLOROP,D3DTOP_ADD);
发光映射:用到是D3DTOP_ADD.
细节映射:用到就是D3DTOP_ADDSIGNED.让暗亮更加分明
/////////////////////////////////////////////////////////////////
ALPHA操作
Device->SetTextureStageState(0,D3DTSS_ALPHAARG1,D3DTA_TEXTURE);
Device->SetTextureStageState(0,D3DTSS_ALPHAARG2,D3DTA_DIFFUSE);
Device->SetTextureStageState(0,D3DTSS_ALPHAOP,D3DTOP_MODULATE);
用材质的颜色和ALPHA来混合纹理.
纹理因子的使用(TEXTUREFACTOR)
Device->SetRenderState(D3DRS_TEXTUREFACTOR,0xFF000000);第2个参数是一个32位的颜色值.可以用这个来设置物体的透明度.具体方法如下!
- 学习笔记:多重纹理
- 学习笔记:多重纹理
- DirectX SDK 2006学习笔记7——多重纹理和纹理混合
- OSG学习:多重纹理映射
- 《webgl入门指南》学习笔记三之three.js创建多重纹理
- 多重纹理的学习和使用
- OpenGL学习二十三:多重纹理
- 多重纹理
- 多重纹理
- 多重纹理
- D3D学习笔记:纹理
- OpenGL学习笔记:纹理
- 《高效学习OpenGL》 之 多重纹理 glActiveTexture(),glMultiTexCoord2f(),glClientActiveTexture()
- OpenGL学习笔记4:纹理
- LearnOpenGL学习笔记4:纹理
- LearnOpenGL学习笔记4:纹理
- OpenGL学习笔记4:纹理
- LearnOpenGL学习笔记4:纹理
- spring常用注解
- java.lang.ClassCastException: org.apache.xerces.jaxp.DocumentBuilderFactoryImpl cannot be cast to
- BZOJ 3130 二分+网络流
- 马化腾:一秒变白痴,是我的第一个产品法则
- Hololens官方教程精简版 - 02. Introduction with Device
- 学习笔记:多重纹理
- eclipse maven工程生成war包
- R-FCN、SSD、YOLO2、faster-rcnn和labelImg
- RecycleView+SwipeToLoadLayout+Fresco的自定义刷新加载
- html中键盘事件----在路上(16)
- 原子操作的实现与原理
- url重写session
- list-group(Bootstrap)
- SSH框架之Struts的国际化