2

The OpenGL ® Shading Language Spec バージョン 1.20 http://www.opengl.org/registry/doc/GLSLangSpec.Full.1.20.8.pdfには、次のように示されています。

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は多くのuniform*関数を示していますが、uniform変数の配列を扱うものはないようですgl_LightSource[0].

JavaScript を使用してWebGLで gl_LightSource[0] フィールドを設定するにはどうすればよいですか? たとえば、gl_LightSource[0].position

よろしくお願いします。

注: http://www.khronos.org/message_boards/viewtopic.php?f=43&t=3373へのクロス ポスト

4

1 に答える 1

3

WebGL は OpenGL ES 2.0 (つまり、携帯電話などの制限付きハードウェア向けに設計された OpenGL のバージョン) に基づいており、そのままでは照明をサポートしていません。自分でコーディングする必要があります。私はそれを行う方法を説明するいくつかのチュートリアルを書きました(大まかに NeHe OpenGL のものに基づいています)。あなたの質問を考えると、それらはおそらくあなたにとって少し基本的なものになるでしょうが、レッスン 7 と 12 はおそらくいくつかの役に立つ指針を与えるでしょう.

于 2011-01-02T18:48:04.587 に答える