gpt4 book ai didi

opengl - 在片段着色器中更改变量

转载 作者:行者123 更新时间:2023-12-02 05:15:56 24 4
gpt4 key购买 nike

是否禁止在片段着色器中更改不变量的值?当我尝试将新值设置为“doseValue”时,以下代码恰好崩溃:

const GLchar *point_fragment_shader =
"#version 420\n"
""
"/* Per Fragment Input Attributes */"
"in float doseValue;"
"in float alphaValue;"
"in vec2 displayUncertaintyByChangedColor;"
""
"/* Uniform Attributes */"
"uniform float minDisplayDoseValue;"
"uniform int pointVisualizationMode;"
""
"/* Per Fragment Output Values */"
"out vec4 out_color;"
""
"void main()"
"{"
" "
" /* Discard all Points whose dose value is below the minimum */"
" if(doseValue < minDisplayDoseValue)"
" {"
" discard;"
" }"
" else"
" {"
" if(displayUncertaintyByChangedColor.x == 1.0)"
" {"
" doseValue = 500.0;"
" }"
" ..."

在 vec2 中,第一个分量是 0.0 或 1.0,第二个是一些 float 。如果我设置一个新变量并在第二个 if 语句中使用某个任意值对其进行初始化,则不会出现错误。

最佳答案

GLSL 4.20 spec, Page 38, Section 4.3.4: Input Variables :

Shader input variables are declared with the storage qualifier in. They form the input interface between previous stages of the OpenGL pipeline and the declaring shader. Input variables must be declared at global scope. Values from the previous pipeline stage are copied into input variables at the beginning of shader execution. Variables declared as inputs cannot be written to during shader execution.

关于opengl - 在片段着色器中更改变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14629191/

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