フラグメントシェーダー内の変数の値を変更することは禁止されていますか? 新しい値を "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 で、2 番目のコンポーネントは浮動小数点数です。新しい変数を設定し、2 番目の if ステートメント内で任意の値で初期化すると、エラーは発生しません。