gpt4 book ai didi

java - GLSL 预定义变量的设置值

转载 作者:行者123 更新时间:2023-12-02 05:11:55 25 4
gpt4 key购买 nike

我正在查看 phong 照明着色器的代码示例。它使用了顶点着色器中预定义的变量 gl_Normal、gl_Vertex 和 gl_ModelViewProjectionMatrix。我当前的顶点着色器如下所示。

#version 150 core

in vec4 in_Position;
in vec4 in_Color;
in vec2 in_TextureCoord;

uniform mat4 projection;
uniform mat4 view;
uniform mat4 model;

out vec4 pass_Color;
out vec2 pass_TextureCoord;

void main(void) {
gl_Position = projection * view * model * in_Position;

pass_Color = in_Color;
pass_TextureCoord = in_TextureCoord;
}

我想知道是否可以设置预定义变量的值。例如,我会将 gl_ModelViewProjectionMatrix 的值设置为我的投影制服。我问这个问题是因为每当我尝试使用预定义的变量时,着色器就不起作用。

最佳答案

诸如gl_ProjectionMatrix之类的预定义变量仅在兼容性配置文件中可用。由于您为着色器指定了核心配置文件,因此您将无法使用它们:

#version 150 core

如果您使用兼容性配置文件(我绝不建议这将是一个好主意),您可以使用它们。然后,您可以使用以下命令设置 gl_ProjectionMatrix 的值:

glMatrixMode(GL_PROJECTION);
glLoadMatrix(...);

这些当然也是兼容性配置文件调用,并且在核心配置文件中不可用。但这实际上并不比使用 glUniformMatrix4fv() 调用设置 projection 制服的值简单。因此没有充分的理由回到过去。

我在此处的答案中更详细地描述了内置 GLSL 变量在过渡到核心配置文件时发生的情况:GLSL - Using custom output attribute instead of gl_Position .

关于java - GLSL 预定义变量的设置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27263494/

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