首页 > Unity3D频道 > 【Unity杂文】 > Unity3D研究院之解决No subshaders can run on this graphics card
2014
06-04

Unity3D研究院之解决No subshaders can run on this graphics card

今天有个小伙伴问我,他的Shader遇到 No subshaders can run on this graphics card  问题。

我问了一下原来他的Shader是从别的游戏里面借鉴的,我想了一下这个Shader可能是在老的版本上创建的,在新的Unity版本上会有问题。

解决办法:在Unity里Creat一个新的Shader,把出问题的Shader里面的代码原封不动的拷贝进来,问题解决。嘿嘿。 博客记录一下。。

最后编辑:
作者:雨松MOMO
专注移动互联网,Unity3D游戏开发
捐 赠写博客不易,如果您想请我喝一杯星巴克的话?就进来看吧!

Unity3D研究院之解决No subshaders can run on this graphics card》有 5 条评论

  1. - 说:

    我想问一下,我反编译后得到的shader是这样的:Shader “ALTO/Additive Overlay Alpha” { Properties{ _MainTex(“Texture 1”, 2D) = “white” { } _SecondaryTex(“Texture 2”, 2D) = “white” { } _SecondaryTexScale(“Texture 2 Scale”, Color) = (0,0,0,0) } SubShader{ Tags{ “LIGHTMODE” = “Vertex” “QUEUE” = “Overlay” } Pass{ Tags{ “LIGHTMODE” = “Vertex” “QUEUE” = “Overlay” } ZTest Always ZWrite Off Blend SrcAlpha One GpuProgramID 36451 Program “vp” { SubProgram “gles ” { “!!GLES #version 100#ifdef VERTEX attribute vec4 _glesVertex; attribute vec4 _glesColor; attribute vec4 _glesMultiTexCoord0; uniform highp mat4 glstate_matrix_mvp; uniform highp vec4 _SecondaryTex_ST; uniform highp vec4 _MainTex_ST; varying lowp vec4 xlv_COLOR0; varying highp vec2 xlv_TEXCOORD0; varying highp vec2 xlv_TEXCOORD1; varying highp vec2 xlv_TEXCOORD2; void main() { lowp vec4 tmpvar_1; mediump vec4 tmpvar_2; tmpvar_2 = clamp(_glesColor, 0.0, 1.0); tmpvar_1 = tmpvar_2; highp vec4 tmpvar_3; tmpvar_3.w = 1.0; tmpvar_3.xyz = _glesVertex.xyz; xlv_COLOR0 = tmpvar_1; xlv_TEXCOORD0 = ((_glesMultiTexCoord0.xy * _SecondaryTex_ST.xy) + _SecondaryTex_ST.zw); highp vec2 tmpvar_4; tmpvar_4 = (_glesMultiTexCoord0.xy * _MainTex_ST.xy); xlv_TEXCOORD1 = (tmpvar_4 + _MainTex_ST.zw); xlv_TEXCOORD2 = (tmpvar_4 + _MainTex_ST.zw); gl_Position = (glstate_matrix_mvp * tmpvar_3); } ………这个shader貌似是编译后得到的shader,我用不了,编译器在Program “vp”这一行报错,请问我该怎么才能使用反编译得来的shader呢?

  2. 呵呵 说:

    行不通~~

  3. aaaa 说:

    我试过,你这个方法是不行的

  4. Zzhen551 说:

    这么简单,哈哈哈!!

留下一个回复

你的email不会被公开。