【问题标题】:Lighting does not work with gluSphere照明不适用于 gluSphere
【发布时间】:2010-04-15 17:11:58
【问题描述】:

这是一个简单的问题,我有点不好意思寻求帮助。

我正在对 gluSphere 进行一个简单的调用以渲染一个球体,但是,即使我很确定我正确地添加了法线和照明,它也不能正常照明。但是,如果我添加纹理,模型会正常点亮,但它似乎总是平滑,我无法将其更改为平面。

这是我的 init() 函数中的照明代码:

gl.glLightfv( GL.GL_LIGHT0, GL.GL_AMBIENT , AMBIENT_LIGHT, 0 );
gl.glLightfv( GL.GL_LIGHT0, GL.GL_DIFFUSE , DIFFUSE_LIGHT, 0 );
gl.glLightfv( GL.GL_LIGHT0, GL.GL_POSITION, light_pos    , 0 );
gl.glEnable ( GL.GL_LIGHT0 );
gl.glEnable ( GL.GL_LIGHTING );

这是我在 display() 函数中的球体代码:

gl.glColor3d(1.0, 1.0, 1.0);
glu.gluQuadricDrawStyle  (quad, GLU.GLU_FILL);
glu.gluQuadricNormals    (quad, GLU.GLU_FLAT);
glu.gluQuadricOrientation(quad, GLU.GLU_OUTSIDE);

glu.gluSphere(quad, 1.0, lat, lon);

请指教。

编辑: 光值:

public final static float[] DIFFUSE_LIGHT  = {  1.0f, 1.0f,  1.0f, 1.0f };
public final static float[] AMBIENT_LIGHT  = {  0.3f, 0.3f,  0.3f, 1.0f };
public              float[] light_pos      = { -2.0f, 2.0f, 10.0f, 0.0f };

添加了材料,没有变化:

gl.glMaterialfv(GL.GL_FRONT, GL.GL_AMBIENT , new float[]{0.5f, 0.5f, 0.5f, 1.0f}, 0);
gl.glMaterialfv(GL.GL_FRONT, GL.GL_DIFFUSE , new float[]{1.0f, 1.0f, 1.0f, 1.0f}, 0);
gl.glMaterialfv(GL.GL_FRONT, GL.GL_SPECULAR, new float[]{0.7f, 0.7f, 0.7f, 1.0f}, 0);
gl.glMaterialf (GL.GL_FRONT, GL.GL_SHININESS, 0.5f);
gl.glMaterialfv(GL.GL_FRONT, GL.GL_EMISSION, new float[]{0.3f, 0.3f, 0.3f, 0.0f}, 0);

编辑2:

废话,我想我有一个:

gl.glEnable(GL.GL_TEXTURE_2D);

在某处处于活动状态,如果没有与之关联的纹理,它会导致我的模型没有阴影。 -_- 继续好人,继续。

【问题讨论】:

    标签: opengl graphics jogl


    【解决方案1】:

    我也遇到了灯光问题,发现需要加glEnable(GL_NORMALIZE)

    【讨论】:

      【解决方案2】:

      您期待什么样的照明? glLightfv 的第三个参数应该是您设置的灯光的值。

      【讨论】:

      • 此时,任何旧灯,我得到的只是一个黑球。照明值如下,但是,我不确定它是否有帮助。它们非常适合我使用自己的法线手动构建的任何形状。也许我只需要实现我自己的球体代码。添加到帖子,因为评论不会自动格式化。
      • 对不起,我看错了你的函数调用。你传递的第四个参数是什么?
      【解决方案3】:
      1. 您是否进行了任何可能影响灯光位置的平移/旋转?
      2. GL_COLOR_MATERIAL 是启用还是禁用?如果是,它可能会覆盖您的材质设置。
      3. 即使您的代码没有启用 GL_TEXTURE_2D,您也应该尝试在到达该行之前手动禁用它,以防万一。
      4. 如果您希望完全忽略 gluSphere,可以使用 this thread 中的一些代码。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-11-13
        • 2016-10-01
        • 1970-01-01
        • 2012-05-03
        • 1970-01-01
        • 1970-01-01
        • 2020-06-25
        • 2018-06-04
        相关资源
        最近更新 更多