私はコンピュータグラフィックスを勉強していましたが、私はビューポート、gluorthoの役割とGL_MatrixModeとGL_Projectionをいつ使うのかについて非常に混乱しています。 私が混乱させたサンプルコードです。OpenGL:ビューポート、クリッピング、matrixtmodeの混乱
void init()
{
glClearColor(1.0,1.0,1.0,1.0);//Background Color of Viewport
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-200,200,-200,200,-50,50);
glMatrixMode(GL_MODELVIEW);
}
void wheel()
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1,0.2,0.2);
glLoadIdentity();
glViewport(0,0,200,200);
glutSolidCube(100);
glFlush();
}
void main(int argc,char** argv)
{
glutInit(&argc,argv);
glutInitWindowSize(400,400);
glutInitWindowPosition(400,400);//Position from the top left corner
glutCreateWindow("Car");
init();
glutDisplayFunc(wheel);//Shape to draw
glutMainLoop();
}
キューブのサイズを200に変更すると、それはなぜですか?それはzのクリッピングよりも大きいからですか? glMatrixMode(GL_MODELVIEW)を削除すると、キューブが表示されなくなるのはなぜですか? 表示機能の最後にフラッシュしないと、キューブも消えます。なぜですか? ビューポートを小さくすると、オブジェクトのサイズが小さくなります。これは、オブジェクトの座標がワールド座標ではなくビューポートからの相対座標であることを意味しますか?