Как настроить opengl shininess float, поэтому я могу использовать его в шейдерной программе с gl_FrontMaterial.shininess
?Настройка блеска для glsl
Я пробовал это glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, 100f);
, но основные моменты не становятся меньше, поэтому я думаю, что синины не меняются.
Edit: Это программа пиксельный шейдер, где я использую его:
varying vec4 varyingColor;
varying vec3 varyingNormal;
varying vec4 varyingVertex;
varying vec2 varyingTexCoord;
uniform sampler2D my_color_texture;
varying vec3 varyingEyeVec;
void main() {
vec3 vertexPosition = (gl_ModelViewMatrix * varyingVertex).xyz;
vec3 surfaceNormal = normalize((gl_NormalMatrix * varyingNormal).xyz);
vec3 lightDirection = normalize(gl_LightSource[0].position.xyz - vertexPosition);
float diffuseLightIntensity = max(0, dot(surfaceNormal, lightDirection));
gl_FragColor.rgb = diffuseLightIntensity * varyingColor.rgb;
gl_FragColor += gl_LightModel.ambient;
vec3 reflectionDirection = normalize(reflect(lightDirection, surfaceNormal));
vec3 eyeVecNormal = normalize(varyingEyeVec);
float specular = max(0.0, dot(eyeVecNormal, reflectionDirection));
if (diffuseLightIntensity != 0) {
float fspecular = pow(specular, gl_FrontMaterial.shininess)*gl_LightSource[0].specular.rgb;
gl_FragColor += fspecular;
}
gl_FragColor = texture2D(my_color_texture, varyingTexCoord)*gl_FragColor;
}
Почему вы используете фиксированную функцию, традиционно встроенную в идентификаторы? Они исчезли и незаконны для использования в более поздних версиях OpenGL (ядро OpenGL-3 и последнее). Просто используйте индивидуальную форму. – datenwolf
Что именно вы говорите? – Qualphey
Вы говорите о встроенной переменной GLSL gl_FrontMateral? – Qualphey