DX10/11/12、OpenGL4.0、Vulkan开启Flat shading着色模式

在现代图形引擎中图形管线经历了由固定管线到可编程管线的发展,所以DX、OpenGL早期版本可以在固定管线下直接调用相关API设置着色模式为Flat shading。

  • 以DirectX9中开启Flat shading为例:
Device->SetRenderState(D3DRS_SHADEMODE, D3DSHADE_FLAT);
  • 以OpenGL旧版本中开启Flat shading为例:
glShadeModel(GL_FLAT);

但是目前这些图形引擎(DX10/11/12、OpenGL 4.0、Vulkan)发展出了可编程管线,所以直接调API设置的传统方式废除了,转变成了在变量前添加限定符nointerpolation(hlsl)或flat(glsl)来取消插值,从而开启Flat shading。

  • 以hlsl写的着色器举例:
// 在vertex shader中:
struct VS_TO_PS 
{ 
    float4 Pos:SV_Position; 
    nointerpolation float3 normal:NORMAL; 
    float2 TexCoord:TEXCOORD0; 
};

// 在pixel shader中
struct VS_TO_PS 
{ 
    float4 Pos:SV_Position; 
    nointerpolation float3 normal:NORMAL; 
    float2 TexCoord:TEXCOORD0; 
};

glsl写的着色器类似,只不过是在变量前加flat修饰。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值