DirectX9:第三章 渲染器状态
一.简介
二.着色器模式
1.平面着色
平面着色使得每个图元的每个像素都被赋予该图元第一个顶点所指定的颜色
1 | Device->SetRenderState(D3DRS_SHADEMODE,D3DSHADE_FLAT); |
2.格劳德着色
格劳德着色时得图元表面各像素的颜色值由各顶点的颜色进行线性插值得到
1 | Device->SetRenderState(D3DRS_SHADEMODE,D3DSHADE_GOURAUD); |
三.总结
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | 1). 设置着色模式: SetRenderState(D3DRS_SHADEMODE, D3DSHADE_FLAT) //设置平面着色模式 SetRenderState(D3DRS_SHADEMODE, D3DSHADE_GOURAUD) //设置格劳德着色模式 2). 设置多边形填充模式: SetRenderState(D3DRS_FILLMODE, D3DFILL_POINT) //点填充模式,D3D在多边形的每个顶点绘制一个像素 SetRenderState(D3DRS_FILLMODE, D3DFILL_WIREFRAME) //线填充模式,D3D在多边形的每个边绘制一条线 SetRenderState(D3DRS_FILLMODE, D3DFILL_SOLID) //面模式,D3D默认模式,对多边形的面进行填充 3). 设置全景图形抗锯齿: SetRenderState(D3DRS_MUTISAMPLEANTIALIAS, TRUE) //抗锯齿 SetRenderState(D3DRS_MUTISAMPLEANTIALIAS, FALSE) //不抗锯齿 4). 设置剔除模式: SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE) //不剔除任何面 5). 设置光照模式: SetRenderState(D3DRS_AMBIENT, D3DCOLOR ambientColor); //为整个场景设置环境光 SetRenderState(D3DRS_SPECULARENABLE, TRUE); //激活镜面反射计算(D3D默认情况下关闭) 6). 启动/关闭深度测试: SetRenderState( D3DRS_ZENABLE, TRUE ); //启用深度测试 7) 设置纹理过滤器 //线性纹理 SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR); SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR); //最近点采样 SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_ POINT); SetSamplerState(0, D3DSAMP_MIPFILTER, D3DTEXF_POINT); //各向异性纹理过滤 SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_ANISOTROPIC) SetSamplerState(0, D3DSAMP_MIPFILTER, D3DTEXF_ ANISOTROPIC); 8) SetRenderState( D3DRS_POINTSCALEENABLE, TRUE ); //打开缩放功能 9) SetRenderState( D3DRS_POINTSCALE_A , FtoDW( 1.00f )); //设置因子,下同 SetRenderState( D3DRS_POINTSCALE_B , FtoDW( 1.00F )); SetRenderState( D3DRS_POINTSCALE_C , FtoDW( 1.00f )); 10) SetRenderState( D3DRS_POINTSIZE_MAX, FtoDW( 5.00f )); //设置点大小上限,下类似 SetRenderState( D3DRS_POINTSIZE_MAX, FtoDW( 5.00f )); SetRenderState( D3DRS_POINTSPRITEENABLE , TRUE ) ; //打开点精灵效果 SetRenderState( D3DRS_AMBIENT, 0xffffffff ); //设置环境光颜色开启 ALPHA混合效果 11) 设置混合因子: 源:SetRenderState( D3DRS_SRCBLEND , D3DBLEND_SRCALPHA ); 目的:SetRenderState( D3DRS_DESTBLEND , D3DBLEND_INVSRCALPHA); 第二个参数是 D3DBLEND的枚举结构。 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)