700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > C语言调色板颜色渐变 VC++实现的OpenGL线性渐变色绘制操作示例

C语言调色板颜色渐变 VC++实现的OpenGL线性渐变色绘制操作示例

时间:2024-01-03 02:16:39

相关推荐

C语言调色板颜色渐变 VC++实现的OpenGL线性渐变色绘制操作示例

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

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

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

代码如下:

#include

#include

#include

using namespace std;

const GLsizei width=640;

const GLsizei height=480;//设置窗口的宽和高

void myInit()

{

glClearColor(0,0,0,0);

}

void show()

{

GLsizei dw;

int n,i;

dw=2;

n=(width-1)/dw;

cout<

glClear(GL_COLOR_BUFFER_BIT);

GLsizei r,g,b;

for (i=0;i

{

//绘制应力云图的关键就是下面的这五种不同的颜色对应关系

//根据自己需要可以设置不同的等级,四种也是可以的

if (i>=0&&i<=n/5)

{

r=255;

g=i*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=(i-2*n/5)*255/(n/5);

}

else if(i>3*n/5&&i<=4*n/5)

{

r=0;

g=255-(i-3*n/5)*255/(n/5);

b=255;

}

else

{

r=(i-4*n/5)*255/(n/5);

g=0;

b=255;

}

glColor3f(r/255.0f,g/255.0f,b/255.0f);

glRectf(1.0*i*dw,0.0,1.0*(i+1)*dw,height);

}

glFlush();

}

void reshape(int w,int h)

{

glViewport(0,0,(GLsizei)w,(GLsizei)h);

glMatrixMode(GL_PROJECTION);

glLoadIdentity();

glOrtho(0,w,0,h,-100,100);//设置视野的范围,(左,右,上,下,前,后)

glMatrixMode(GL_MODELVIEW);

glLoadIdentity();

}

int main(int argc,char *argv[])

{

glutInit(&argc, argv);

glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);

glutInitWindowPosition(100,100);

glutInitWindowSize(width,height);

glutCreateWindow("应力云图绘制");

myInit();

glutDisplayFunc(show);

glutReshapeFunc(reshape);

glutMainLoop();

return 0;

}

效果为:

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。