gpt4 book ai didi

java - 着色器中使用的制服处于非 Activity 状态

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:47:23 26 4
gpt4 key购买 nike

我有以下着色器:我的片段着色器:

#version 110
uniform mat4 modelMatrix;
uniform mat4 viewMatrix;
uniform mat4 projectionMatrix;


void main() {
gl_FragColor = vec4(1, 0, 0, 1);
}

还有我的顶点着色器:

#version 110

uniform mat4 modelMatrix;
uniform mat4 viewMatrix;
uniform mat4 projectionMatrix;

attribute vec3 vertex;

void main() {
vec4 world = modelMatrix * vec4(vertex, 1);
vec4 camera = world * viewMatrix;
gl_Position = projectionMatrix * world;
}

它们都能很好地编译和链接。当我打印出我的现役制服时,我得到了

projectionMatrix
modelMatrix

但没有 viewMatrix。当我尝试使用 glGetUniformLocation 获取 Uniform 时,我可以获得 projectionMatrix、modelMatrix 和我的顶点属性,那么为什么 viewMatrix 处于非 Activity 状态?

最佳答案

问题出在顶点着色器的最后一行:

gl_Position = projectionMatrix * world;

您的意思可能是 projectionMatrix * camera。否则,GLSL 编译器会发现 camera 没有被使用并优化它,这意味着 viewMatrix 也不再被使用。未使用的制服不被视为活跃,这会导致您的困境。

注意:您的 View 变换也是向后的。您可能需要 vec4 camera = viewMatrix * world

关于java - 着色器中使用的制服处于非 Activity 状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20498731/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com