3q。

解决方案 »

  1.   

    glMaterial() 参数很多。镜面反射,漫反射,环境光。如果没有调配好,就出不来。glColorMaterial() 按照基本能用的方式搞定,当然能看到效果了。============================================================================
    提问题时标题要简明扼要地说明问题内容,切忌使用"急","求救"之类不能说明问题的标题
    遇到问题可以给我发消息,给我发信息时请附带原帖地址。只回答图形方面的问题,
    http://alphasun.html.533.net/alphasun/index.htm      因为本人其他方面都很弱。
    DocWizard C++程序文档自动生成工具 | Wave OpenGL | MDI OpenGL
      

  2.   

    那么 glColorMaterial() 函数的效果不如 glMaterial() 啦?
      

  3.   

    glColorMaterial() 也能设置你说的那些参数di......
      

  4.   

    glColorMaterial() 产生的 material 是默认效果,肯定不如专门调整的 glMaterial 效果好。
      

  5.   

    也许在不设置glColorMaterial()参数的时候它是默认的吧,不过设置了其参数,就实现了想要的效果.可以参看下面解释.谢谢这位大虾,给分喽!!!!!!!!!!!!!!!glMaterial*()被反复调用以设置各球期望的材质特性。注意,只有一个特性需要被修改时才应该调用一个glMaterialf*()。举个例子,第二和第三球的环境光和漫射特性与第一个球的一致,所以这些特性不用被重新设置一次。因为glMaterialf*()的调用次数影响到系统消耗,所以对材质特性的修改越少越好。
    另一种减少修改材质特性的消耗的办法是使用glColorMaterial(),其形式为
    void glColorMaterial(Glenum face, GLenum mode);
    该命令使材质的特性色和当前颜色(由glColor*()设置)一致。face参数可以是GL_FRONT, GL_BACK, 或GL_FRONT_AND_BACK(缺省值),mode参数可以是GL_AMBIENT, GL_DIFFUSE, GL_AMBIENT_AND_DIFFUSE (缺省值), GL_SPECULAR, 或 GL_EMISSION。face代表哪个或哪些表面的材质特性色需要改变为当前颜色,mode代表哪些材质特性色需要改变。