You need to enable JavaScript to run this app. GLSL片段着色器修改fs_in.tc时报error C7565错误该如何解决
优惠活动
大模型
产品
解决方案
定价
更多

GLSL片段着色器修改fs_in.tc时报error C7565错误该如何解决

报错核心原因

  • 触发C7565报错的直接原因,是违反了GLSL的接口变量访问规则:所有标记为in的接口块成员,也就是从顶点/几何着色器经光栅化插值传入片段着色器的变量,属于只读属性,编译层面完全禁止对这类变量直接做赋值修改。你代码中直接对fs_in.tc.y赋值的写法,刚好踩了这个规则。

正确修改方式

  • 不需要改动接口块的定义,也不需要额外设置fs_in里的tc变量——这个变量的赋值是上游顶点着色器的工作。你只需要在main函数内部定义一个局部变量,承接从fs_in传入的原始纹理坐标,对这个局部变量做翻转运算,再用处理后的坐标完成纹理采样即可。

修改后可正常编译运行的代码

#version 330 core

layout(location = 0) out vec4 colour;

in DATA {
    vec2 tc;
} fs_in;

uniform sampler2D tex;
uniform int top;

void main() {
    // 定义局部变量承接原始纹理坐标,避免修改只读的in接口变量
    vec2 texCoord = fs_in.tc;
    if (top == 1)
        texCoord.y = 1.0 - texCoord.y;
    colour = texture(tex, texCoord);
    if (colour.w < 1.0)
        discard;
}

内容的提问来源于stack exchange,提问作者ImmanuelC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.22 16:27:04