JBTALKS.CC

标题: GLUT 有人会吗? light position 问题. [打印本页]

作者: ~Zero    时间: 2009-10-19 02:33 PM
标题: GLUT 有人会吗? light position 问题.
OpenGL 的 GLUT 有人会吗?

我的问题是, lightsource 都是 relative to eye 的, 有什么办法可以弄到 light source 是固定在 scene 里面的吗?

下面是 C code, 不过我都只是用到 GLUT 的 API 而已, C++ programmer 应该也看得懂.
  1. static void resize(......) {
  2.       ......
  3.       ......
  4.       gluLookAt (4.0, 5.0, 10.0,
  5.                           0.0, 2.5, 0.0,
  6.                           0.0, 1.0, 0.0);
  7.        /* 第一行是 eye position x, y, z,
  8.           第二行是 look at position x, y, z
  9.           第三行是 物体 up vector*/
  10. }

  11. const GLfloat light_position[] = { 0.0f, 0.0f, 1.0f, 1.0f };

  12. int main(......) {
  13.       ......
  14.       glLightfv(GL_LIGHT0, GL_POSITION, light_position);
  15.       glEnable(GL_LIGHT0);
  16.       glEnable(GL_LIGHTING);
  17.       ......
  18.       glutMainLoop();
  19. }
复制代码


以这样的 light position 来放, light source 永远都是在 eye 前面,
如果我把 eye position 换去别的地方, light source 也跟着一起走了.
我想把 light source 固定在场景里面, 例如一个桌灯,
当 eye position 改掉了的时候, light source 也还是固定在同样的地方.

我现在是要把两个 key (左跟右) bind 成 rotate scene, 有两个方法,
一个方法是 rotate eye 的位置, 这样的话 light source 会跟着眼睛跑;
另一个是方法 rotate 整个 scene, 这样的话 light source 会固定 relative to eye position, 场景换了 light source 没换.

有什么方法吗?




欢迎光临 JBTALKS.CC (https://www.jbtalks.cc/) Powered by Discuz! X2.5