zoukankan      html  css  js  c++  java
  • OpenGL 自制API 3

    颜色:

    RGBA模式中,每一个像素会保存以下数据:R值(红色分量)、G值(绿色分量)、B值(蓝色分量)和A值(alpha分量)。其中红、绿、蓝三种颜色相组合,就可以得到我们所需要的各种颜色,而alpha不直接影响颜色,它将留待以后介绍。

        在RGBA模式下选择颜色是十分简单的事情,只需要一个函数就可以搞定。

        glColor*系列函数可以用于设置颜色,其中三个参数的版本可以指定R、G、B的值,而A值采用默认;四个参数的版本可以分别指定R、G、B、A的值。例如:

        void glColor3f(GLfloat red, GLfloat green, GLfloat blue);

       void glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);

       (还记得吗?3f表示有三个浮点参数~请看第二课中关于glVertex*函数的叙述。)

       将浮点数作为参数,其中0.0表示不使用该种颜色,而1.0表示将该种颜色用到最多。例如:

       glColor3f(1.0f, 0.0f, 0.0f);   表示不使用绿、蓝色,而将红色使用最多,于是得到最纯净的红色。

       glColor3f(0.0f, 1.0f, 1.0f);   表示使用绿、蓝色到最多,而不使用红色。混合的效果就是浅蓝色。

       glColor3f(0.5f, 0.5f, 0.5f);   表示各种颜色使用一半,效果为灰色。

        注意:浮点数可以精确到小数点后若干位,这并不表示计算机就可以显示如此多种颜色。实际上,计算机可以显示的颜色种数将由硬件决定。如果OpenGL找不到精确的颜色,会进行类似“四舍五入”的处理。

      注意:glColor系列函数,在参数类型不同时,表示“最大”颜色的值也不同。

      采用f和d做后缀的函数,以1.0表示最大的使用。

      采用b做后缀的函数,以127表示最大的使用。

      采用ub做后缀的函数,以255表示最大的使用。

      采用s做后缀的函数,以32767表示最大的使用。

      采用us做后缀的函数,以65535表示最大的使用。

    指定着色模型

        OpenGL允许为同一多边形的不同顶点指定不同的颜色。例如:

    #include <math.h>
    const GLdouble Pi = 3.1415926536;
    void myDisplay(void)
    {
        int i;
        // glShadeModel(GL_FLAT);
        glClear(GL_COLOR_BUFFER_BIT);
        glBegin(GL_TRIANGLE_FAN);
        glColor3f(1.0f, 1.0f, 1.0f);
        glVertex2f(0.0f, 0.0f);
        for(i=0; i<=8; ++i)
        {
            glColor3f(i&0x04, i&0x02, i&0x01);
            glVertex2f(cos(i*Pi/4), sin(i*Pi/4));
        }
        glEnd();
        glFlush();
    }

     在默认情况下,OpenGL会计算两点顶点之间的其它点,并为它们填上“合适”的颜色,使相邻的点的颜色值都比较接近。如果使用的是RGB模式,看起来就具有渐变的效果。如果是使用颜色索引模式,则其相邻点的索引值是接近的,如果将颜色表中接近的项设置成接近的颜色,则看起来也是渐变的效果。但如果颜色表中接近的项颜色却差距很大,则看起来可能是很奇怪的效果。

        使用glShadeModel函数可以关闭这种计算,如果顶点的颜色不同,则将顶点之间的其它点全部设置为与某一个点相同。(直线以后指定的点的颜色为准,而多边形将以任意顶点的颜色为准,由实现决定。)为了避免这个不确定性,尽量在多边形中使用同一种颜色。

        glShadeModel的使用方法:

        glShadeModel(GL_SMOOTH);   // 平滑方式,这也是默认方式

        glShadeModel(GL_FLAT);        // 单色方式

    小结:
        本课学习了如何设置颜色。其中RGB颜色方式是目前PC机上的常用方式。


        可以设置glClear清除后屏幕所剩的颜色。

        可以设置颜色填充方式:平滑方式或单色方式。

  • 相关阅读:
    vivado操作基本问题
    IIC通信控制的AD5259------在调试过程中遇到的奇葩问题
    FPGA基础架构总结
    PLL到底是个啥么东西呢?
    CSS-3 Transform 的使用
    CSS-3 box-shadow 的使用
    一些CSS3的乐趣
    CSS-3 文字阴影—text-shadow 的使用
    Jquery 较好的效果
    如何关闭输入法
  • 原文地址:https://www.cnblogs.com/biubiubiubiu/p/4330418.html
Copyright © 2011-2022 走看看