IOS 顶点渲染器定义 out vec2 v_uv0[9]会报无法连接

CCProgram vs %{
precision highp float;

#include
#include

in vec3 a_position;
in vec4 a_color;
out vec4 v_color;

#if USE_TEXTURE
in vec4 a_uv0;
out vec2 v_uv0[9];
#endif

uniform Constant{
vec2 textureSize;
float edgeOnly;
float time;
float burnAmount;
float lineWidth;
};

void main () {
vec4 pos = vec4(a_position, 1);

#if CC_USE_MODEL
pos = cc_matViewProj * cc_matWorld * pos;
#else
pos = cc_matViewProj * pos;
#endif

#if USE_TEXTURE
vec2 unit = 1.0 / textureSize;
v_uv0[0] = a_uv0.xy + vec2(-1, -1) * unit;
v_uv0[1] = a_uv0.xy + vec2( 0, -1) * unit;
v_uv0[2] = a_uv0.xy + vec2( 1, -1) * unit;
v_uv0[3] = a_uv0.xy + vec2(-1,  0) * unit;
v_uv0[4] = a_uv0.xy + vec2( 0,  0) * unit;
v_uv0[5] = a_uv0.xy + vec2( 1,  0) * unit;
v_uv0[6] = a_uv0.xy + vec2(-1,  1) * unit;
v_uv0[7] = a_uv0.xy + vec2( 0,  1) * unit;
v_uv0[8] = a_uv0.xy + vec2( 1,  1) * unit;
#endif

v_color = a_color;

gl_Position = pos;

}
}%

用顶点渲染器处理uv数组做边缘检测,Android平台没问题。但是IOS会出现link failed错误

还有用内置变量cc_screenSize.x / cc_screentSize.y做宽高比的时候,和自己传入的宽高效果不一致。
内置变量cc_nativeSize会直接报错,没有定义。

顶顶顶顶顶

你的fs代码呢?
然后报错信息呢?

已经定位是out vec2 v_uv0[9];这一句的问题,把他改成out vec2 v_uv0;是没问题的。但是就是vs输出数据,ios就会报failed to linked program。

IOS13更新到IOS14,没报错了

那IOS13是还是有问题呗

遇到相同问题
版本2.4.3

cc_nativeSize这个uniform报undeclared identifier
cc_screenSize的值好像不对啊

编辑器里报的错

我也遇到这个问题了,请问您解决了吗?

可以用js获取屏幕尺寸然后传进去,不用内置的
不过我写死了

1赞