私が学ぶことをお勧めする方法は、固定機能プログラムを取得し、各ビットを一度に追加することによって、ゆっくりとコアプロファイルに変換し始めることです。基本的に3つの主要な問題に取り組む必要がありますが、残念ながら、すべてかなり大きく、画面に何も表示されない場合にどのビットが壊れているかわからないように相互に結びついています。しかし、あなたがそれについて正しい方法で進むことができれば、あなたは大丈夫なはずです。
まず、頂点バッファオブジェクトと頂点配列オブジェクトについて学習します。glBegin、glEnd、glVertex3f、glColor4f、glNormal3f、glTexCoord2fなどを捨てるには...
glRotatef、glTranslate、glPushMatrix、glPopMatrix、glMatrixMode、glLoadIdentity、GL_PROJECTION、GL_MODELVIEW、glFrustum、glOrtho、gluLookAt、gluPerspective、gluOrtho2を捨てるための手動行列変換について学びます。OpenGLサイトがSDKで言及しているglmを確認することをお勧めします。非コアプロファイルで固定関数コンポーネントを使用しているときに、glLoadMatrixfを使用して手動でマトリックスをロードできます。後で、マトリックスをシェーダーにバインドする必要があります。
基本的なGLSLシェーダーを学びます。非推奨のgl_vertex、gl_normal、ftransform()がありますが、これらは引き続きVBOで機能します。シェーダーバインディングが完全にセットアップされるまで、これらを使用できます。
次に、すべてのシェーダーバインディングを実行し、固定のgl_vertexとgl_positionの代わりに頂点属性を使用します。ユニフォームを使用してモデルビューをアップロードし、ftransform()ではなく射影行列を使用します。ライトやマテリアルプロパティなど(シェーダーが毎回計算しないように、プロジェクションだけでなくmodelviewprojectionをアップロードする傾向があります)。
最後にコアプロファイルを使用します。コアプロファイルの作成をサポートするウィンドウツールキットが必要になります。GLUT、GLFWはそうします。SMFLはそうではありません。SDL1.3-devはそうします。残念ながら、pygameはそうは思わない。コアプロファイルは、使用されなくなった機能を破棄します。