切换到shader模式

在OpenGL整个程序的初始化阶段(一般是init()函数),做以下工作。
1、顶点着色程序的源代码和片段作色程序的源代码要分别保存到一个字符数组里面;
2、使用glCreateshader()分别创建一个顶点着色器对象和一个片段着色器对象;
3、使用glShaderSource()分别将顶点着色程序的源代码字符数组绑定到顶点着色器对象,将片段着色程序的源代码字符数组绑定到片段着色器对象;
4、使用glCompileShader()分别编译顶点着色器对象和片段着色器对象;
5、使用glCreaterProgram()创建一个(着色)程序对象;
6、使用glAttachShader()分别将顶点着色器对象和片段着色器对象附加到(着色)程序对象上;
7、使用glLinkProgram()对(着色)程序对象执行链接操作
8、使用glValidateProgram()对(着色)程序对象进行正确性验证
9、最后使用glUseProgram()将OpenGL渲染管道切换到着色器模式,并使用刚才做好的(着色)程序对象。
然后,才可以提交顶点。
具体过程,参看《OpenGL Superbible 4th edition》chapter 15

### 实现自定义 Shader 混合模式面板 为了创建自定义的Shader混合模式面板,可以利用Unity中的`#pragma shader_feature`和`#pragma multi_compile`指令来定义不同的混合模式选项。这些宏允许开发者在编译时选择特定的功能或配置。 #### 使用 `#pragma shader_feature` 当希望提供一种可选功能给用户控制时,比如开启或关闭某种效果,可以使用`#pragma shader_feature`。这会根据材质属性设置的不同而启用或禁用相应的代码路径[^1]: ```csharp // 如果开启了_INVERT_ON,则执行反转颜色逻辑 #pragma shader_feature _INVERT_ON ``` 对于更复杂的场景,如支持多种叠加方式的选择,应该采用`#pragma multi_compile`语句。此命令能够处理多个可能的状态组合,并让美术师能够在Inspector视图里轻松切换不同行为: ```csharp // 支持三种覆盖模式:无、相加、乘法 #pragma multi_compile _OVERLAY_NONE _OVERLAY_ADD _OVERLAY_MULTIPLY ``` 接着,在片段着色器内部依据所选关键字来进行具体运算: ```hlsl fixed4 frag (v2f i) : SV_Target { fixed4 col = tex2D(_MainTex, i.uv); #if defined(_INVERT_ON) col.rgb = 1 - col.rgb; // 反转RGB通道值 #endif #ifdef _OVERLAY_ADD col += _OverlayColor; #elif defined(_OVERLAY_MULTIPLY) col *= _OverlayColor; #else // 默认不做任何操作 (_OVERLAY_NONE) #endif return col; } ``` 除了编写上述HLSL代码外,还需要确保在Unity编辑器内的材质组件上正确设置了纹理和其他必要的参数,以便达到预期视觉效果[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值