是否禁止更改片段着色器內部的變量值?下面的代碼崩潰什麼時候我嘗試設置一個新的值設置爲「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,第二個是一些浮點數。如果我在第二個if語句中設置了一個新變量並用一些任意值初始化它,那麼就沒有錯誤。
[嘗試此](http://stackoverflow.com/a/13874526/44729)內聯GLSL。 – genpfault