代码之家  ›  专栏  ›  技术社区  ›  kostmo

Android上带照明的彩色材料

  •  2
  • kostmo  · 技术社区  · 15 年前

    看来 glColorMaterial() OpenGL ES . 根据 this post (对于iPhone),您仍然可以启用 GL_COLOR_MATERIAL 在OpenGL es1.x中,但是您仍然只能使用 GL_FRONT_AND_BACK GL_AMBIENT_AND_DIFFUSE 如果不是这样的话 glColorMaterial() . 我会同意这一点,但漫射照明工作不正常。

    我设置了我的场景,并用一个灯光进行了测试 glMaterialfv() GL_AMBIENT GL_DIFFUSE 一次在初始化中。法线已正确设置,照明按预期方式工作。我看到古罗的阴影。

    GL_LIGHTING glColor4f() 出现在场景中的各种对象上。这也起到了预期的作用。但是,什么时候 glEnable(GL_COLOR_MATERIAL) 被称为,平坦的颜色仍然存在。我希望看到灯光效果。

    mentioned on anddev.org ,但我不确定那里的信息是否准确。

    编辑 Issue 8015 . 是的

    这是一个 minimal testcase 重现问题。

    alt text

    Android 2.1(摩托罗拉Droid)上运行的相同代码截图:

    alt text

    Android 1.6(Emulator)上的屏幕截图:

    alt text

    1 回复  |  直到 8 年前
        1
  •  1
  •   kostmo    14 年前

    color ,我忘了缩放颜色组件,使其在[0,1]范围内浮动:

        gl.glColor4f(Color.red(color), Color.green(color), Color.blue(color), Color.alpha(color));
    

    它应该是这样的:

        gl.glColor4f(Color.red(color)/(float) 0xFF, Color.green(color)/(float) 0xFF, Color.blue(color)/(float) 0xFF, Color.alpha(color)/(float) 0xFF);