比如
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程式指南。
glShadeModel(GL_SMOOTH);
題主有寫這句嗎,如果寫了,你只需要設定直線兩個端點的顏色,OpenGL會預設幫你畫漸層顏色;
不過看你的程式碼,似乎是想畫一系列點,根據一些條件來設定每個點的顏色?建議問題描述地再詳細點,貼上全面點的程式碼。
先寫一個通用Bresenham演算法
一個一個點畫吧,我是這樣想的,寫個函數來變化R G B分量的數值就行了。 。