円状グラデーションのテクスチャを作るには、各ピクセル単位の明度としてテクスチャの中心からの距離を利用することができます。距離がそのまま明度になるなら、中心から遠くにいくほど白い、といった感じですね。ちなみに、ある二点 (x1, y1), (x2, y2)の間の距離をだすには、
sqrt((x1-x2)×(x1-x2)+(y1-y2)×(y1-y2))
です。平方根をとる関数 sqrt() をつかうには math.h をインクルードする必要があります。中心(テクスチャの幅/2, テクスチャの高さ/2)からの距離を出すわけですから、さきほどのある二点のうち、どちらかを中心として、もう片方をテクスチャの各ピクセル位置にして距離を計算すればよいですね。出てきた距離は適当な範囲に収めるようにするとよいでしょう。unsigned char なら 0〜255 みたいな。
また、ライトを当ててシェーディング効果をテクスチャの上に反映させたい場合は、glTexEnv*() を利用して、ポリゴンの上にどうテクスチャを重ねるかを指定しなくてはいけませんし、前回の演習同様に、ライトを設定し、ポリゴンに法線を持たせなくては正しく表現されません。
テクスチャの拡大縮小時のフィルター効果は、文字通り拡大縮小されたテクスチャのピクセルがどのように補間されるかを決めるものです。
従って、違うフィルターを使ったテクスチャを並べて表示しておくなどして、テクスチャの拡大と縮小した際に「どう変化するか」を観察できるようなプログラムが望ましいと思います。
下記の関数についても調べてみるとよいでしょう。
glGenTextures() / glDeleteTextures()
glBindTexture()
glTexParameter*()
glTexEnv*()
glTexImage*()
glEnable() / glDisable()
glTexCoord*()