2010-12-27 1 views
2

Расположение The OpenGL ® Shading Language Spec версия 1,20 http://www.opengl.org/registry/doc/GLSLangSpec.Full.1.20.8.pdf показывает следующее:Манипулирование gl_LightSource [gl_MaxLights]

struct gl_LightSourceParameters { 
vec4 ambient;    // Acli 
vec4 diffuse;    // Dcli 
vec4 specular;   // Scli 
vec4 position;   // Ppli 
vec4 halfVector;   // Derived: Hi 
vec3 spotDirection;  // Sdli 
float spotExponent;  // Srli 
float spotCutoff;   // Crli 
          // (range: [0.0,90.0], 180.0) 
float spotCosCutoff;  // Derived: cos(Crli) 
          // (range: [1.0,0.0],-1.0) 
float constantAttenuation; // K0 
float linearAttenuation; // K1 
float quadraticAttenuation;// K2 
}; 

    uniform gl_LightSourceParameters gl_LightSource[gl_MaxLights]; 

Кроме того, http://www.lighthouse3d.com/opengl/glsl/index.php?ogldir1 показывает следующие фрагменты кода:

lightDir = normalize(vec3(gl_LightSource[0].position)); 

https://cvs.khronos.org/svn/repos/registry/trunk/public/webgl/doc/spec/WebGL-spec.html#5.10 показывает много униформы * но ничего, похоже, не имеет дело с массивом однородной переменной типа gl_LightSource [0].

Как установить поля gl_LightSource [0] в WebGL с использованием JavaScript? Например, gl_LightSource [0] .положение

Заранее за вашу помощь.

Примечание: Кросс пост на http://www.khronos.org/message_boards/viewtopic.php?f=43&t=3373

ответ

3

WebGL основан на OpenGL ES 2.0 - то есть, версия OpenGL предназначен для ограниченного аппаратного обеспечения, как мобильные телефоны - и не поддерживает освещение из коробки; вы должны сами его закодировать. Я написал some tutorials (в основном, на основе NeHe OpenGL), которые объясняют, как это сделать; учитывая ваш вопрос, они, вероятно, будут для вас немного базовыми, но уроки 7 и 12, вероятно, дадут вам несколько полезных указателей.

Смежные вопросы