2010-12-27 6 views
2

Die OpenGL ® Shading Language Spec Version 1.20 http://www.opengl.org/registry/doc/GLSLangSpec.Full.1.20.8.pdf zeigt folgendes:Manipulieren 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]; 

Auch zeigt http://www.lighthouse3d.com/opengl/glsl/index.php?ogldir1 die folgenden Code-Schnipsel:

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

https://cvs.khronos.org/svn/repos/registry/trunk/public/webgl/doc/spec/WebGL-spec.html#5.10 zeigt viele einheitliche * Funktionen, aber nichts scheint mit einem Array von einheitlichen Variablen wie gl_LightSource [0] zu tun haben. Wie setzen wir die gl_LightSource [0] Felder in WebGL mit JavaScript? Zum Beispiel, gl_LightSource [0] .position

Vielen Dank im Voraus für Ihre Hilfe.

Hinweis: Kreuz auf http://www.khronos.org/message_boards/viewtopic.php?f=43&t=3373

Antwort

3

WebGL basiert auf OpenGL ES 2.0 - das heißt, die Version von OpenGL für eingeschränkte Hardware wie Handys konzipiert - und nicht Beleuchtung aus der Box unterstützt; Sie müssen es selbst programmieren. Ich habe geschrieben some tutorials (meist lose basierend auf den OpenGL NeHe), die erklären, wie es geht; Wenn Sie Ihre Frage stellen, werden sie wahrscheinlich ein wenig grundlegend für Sie sein, aber die Lektionen 7 und 12 werden Ihnen wahrscheinlich nützliche Hinweise geben.