vc++实现的OpenGL线性渐变色绘制操作示例

  

本文实例讲述了vc++实现的OpenGL线性渐变色绘制操作。分享给大家供大家参考,具体如下:

  

用到的思路就是在应力的最大值和最小值之间划分区间,每个区间的标识点对应不同的颜色值。

  

然后在区间内的应力值对应的颜色就进行插值来计算。

  

代码如下:

        # include & lt; GL/glut.h>   # include & lt; iostream>   # include & lt; cmath>   使用名称空间性病;   const GLsizei宽度=640;   const GLsizei高度=480;//设置窗口的宽和高   空白myInit ()   {   glClearColor (0, 0, 0, 0);   }   空白显示()   {   GLsizei dw;   整数n,我;   dw=2;   n=(宽度)/dw;   cout<& lt;“n=? lt; & lt; n<& lt; endl;   glClear (GL_COLOR_BUFFER_BIT);   GLsizei r, g, b;   (我=0;i=0,, i<=n/5)   {   r=255;   g=我* 255/(n/5);   b=0;   }   else if (i> n/5,和i<=2 * n/5)   {   (r=255) - i n/5 * 255/(n/5);   g=255;   b=0;   }   else if (i> 2 * n/5,和i<=3 * n/5)   {   r=0;   g=255;   b=(我2 * n/5) * 255/(n/5);   }   else if (i> 3 * n/5,和i<=4 * n/5)   {   r=0;   g=255 -(我* n/5) * 255/(n/5);   b=255;   }   其他的   {   r=(我* n/5) * 255/(n/5);   g=0;   b=255;   }   glColor3f (255.0 r/f, g f/255.0, 255.0 b/f);   glRectf(1.0 *我* dw, 0.0, 1.0 * (i + 1) * dw,高度);   }   glFlush ();   }   无效的重塑(int, int h)   {   glViewport (0, 0, (GLsizei) w (GLsizei) h);   glMatrixMode (GL_PROJECTION);   glLoadIdentity ();   glOrtho (0 w 0 h, -100100);//设置视野的范围,(左,右,上,下,前,后)   glMatrixMode (GL_MODELVIEW);   glLoadIdentity ();   }   int主要(int命令行参数个数,char * argv [])   {   glutInit(和命令行参数个数,argv);   glutInitDisplayMode (GLUT_RGB | GLUT_SINGLE);   glutInitWindowPosition (100100);   glutInitWindowSize(宽度、高度);   glutCreateWindow(“应力云图绘制”);   myInit ();   glutDisplayFunc(显示);   glutReshapeFunc(改造);   glutMainLoop ();   返回0;   }      之前      

效果为:

  

 vc++实现的OpenGL线性渐变色绘制操作示例

  

希望本文所述对大家vc++程序设计有所帮助。

vc++实现的OpenGL线性渐变色绘制操作示例