Я работаю над проектом в GLSL (из которого у меня нет опыта). В настоящее время я сам ничего не кодирую, просто пытаюсь запустить чужой код. К сожалению, они написали свой код, используя версию 120, и я пытаюсь запустить его с версией 330. Примечание: я запускаю это на Ma c с версией 10.15. Вот код:
# version 330 core
in vec3 mynormal;
in vec4 myvertex;
uniform mat4 modelview;
out vec4 fragColor;
uniform vec3 color;
const int numLights = 10;
uniform bool enablelighting; // are we lighting at all (global).
uniform vec4 lightposn[numLights]; // positions of lights
uniform vec4 lightcolor[numLights]; // colors of lights
uniform int numused; // number of lights used
uniform vec4 ambient;
uniform vec4 diffuse;
uniform vec4 specular;
uniform vec4 emission;
uniform float shininess;
vec4 ComputeLight (const in vec3 direction, const in vec4 lightcolor, const in vec3 normal, const in vec3 halfvec, const in vec4 mydiffuse, const in vec4 myspecular, const in float myshininess) {
float nDotL = max(dot(normal, direction), 0.0);
vec4 diffuse = mydiffuse * lightcolor * nDotL;
float nDotH = max(dot(normal, halfvec), 0.0);
vec4 specular = myspecular * lightcolor * pow(nDotH, myshininess);
return diffuse + specular;
}
void main (void)
{
if (enablelighting) {
const vec3 eyepos = vec3(0,0,0) ;
vec4 _mypos = gl_ModelViewMatrix * myvertex ;
vec3 mypos = _mypos.xyz / _mypos.w;
vec3 eyedir = normalize(eyepos - mypos);
vec3 _normal = (gl_ModelViewMatrixInverseTranspose*vec4(mynormal,0.0)).xyz ;
vec3 normal = normalize(_normal);
gl_FragColor = ambient;
for (int i = 0; i < numused; ++i) {
vec3 light_direction;
if (lightposn[i].w == 0) {
light_direction = lightposn[i].xyz;
} else {
vec3 light_position = lightposn[i].xyz / lightposn[i].w ;
light_direction = normalize(light_position - mypos); // no attenuation
}
vec3 half = normalize (light_direction + eyedir);
vec4 col = ComputeLight(light_direction, lightcolor[i], normal, half, diffuse, specular, shininess);
gl_FragColor += col;
}
}
else gl_FragColor = color ;
}
И вот ошибки, которые я получаю:
Compile Error, Log Below
ERROR: 0:60: Use of undeclared identifier 'gl_ModelViewMatrix'
ERROR: 0:61: Use of undeclared identifier '_mypos'
ERROR: 0:61: Use of undeclared identifier '_mypos'
ERROR: 0:63: Use of undeclared identifier 'mypos'
ERROR: 0:64: Use of undeclared identifier 'gl_NormalMatrix'
ERROR: 0:79: Use of undeclared identifier 'mypos'
ERROR: 0:90: Use of undeclared identifier 'mypos'
ERROR: 0:101: Use of undeclared identifier 'mypos'
ERROR: 0:112: Use of undeclared identifier 'mypos'
ERROR: 0:123: Use of undeclared identifier 'mypos'
ERROR: 0:134: Use of undeclared identifier 'mypos'
ERROR: 0:145: Use of undeclared identifier 'mypos'
ERROR: 0:156: Use of undeclared identifier 'mypos'
ERROR: 0:167: Use of undeclared identifier 'mypos'
ERROR: 0:178: Use of undeclared identifier 'mypos'
ERROR: 0:193: Use of undeclared identifier 'eyedirn'
ERROR: 0:196: Use of undeclared identifier 'normal'
ERROR: 0:196: Use of undeclared identifier 'halfy'
ERROR: 0:197: Use of undeclared identifier 'colApp'
ERROR: 0:206: Use of undeclared identifier 'gl_FragColor'
ERROR: 0:208: Use of undeclared identifier 'gl_FragColor'
После некоторого поиска в Google, я понимаю, что это проблема совместимости между версии. Тем не менее, я не знаю достаточно о GLSL, чтобы знать, как это исправить. Я надеюсь изменить этот файл для запуска вместо того, чтобы пытаться написать его для совместимости с версией 330. Может кто-нибудь дать мне совет, как изменить этот код для запуска для меня?