本文实例讲述了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++程序设计有所帮助。
vc++实现的OpenGL线性渐变色绘制操作示例