比如
glBegin( GL_LINE_STRIP );
for(int i=0; i<n; ++i){
/**
if( i 满足某条件 )
glColor3f( 设置为某颜色 );
else if(///)
glColor3f(///);
...
这么写似乎不可以
*/
glVertexf( /*vertex i*/ );
}
glEnd();
就这么简单。手写软件渲染是什么鬼,插值都手写了还用opengl干嘛。
记住,opengl的默认颜色渐变方式就是最简单的线性插值。任何顶点颜色不一样的图元内部都会是渐变。
如果不想用简单的线性插值,可以使用Shader。可以在fragment shader里根据插值得到的颜色计算应该有的颜色。具体如何使用Shader和modern opengl特性,请阅读最新版本的opengl编程指南。