根据百度词条上

glOrtho

这个函数描述了一个平行修剪空间。这种投影意味着离观察者较远的对象看上去不会变小(与透视投影相反)。在3D笛卡尔坐标中想象这个修剪空间,左边和右边是最小和最大的X值,下边和上边是最小和最大的Y值,近处和远处是最小和最大的Z值。 正射投影,又叫平行投影。这种投影的视景体是一个矩形的平行管道,也就是一个长方体。正射投影的最大一个特点是无论物体距离相机多远,投影后的物体大小尺寸不变。这种投影通常用在建筑蓝图绘制和计算机辅助设计等方面,这些行业要求投影后的物体尺寸及相互间的角度不变,以便施工或制造时物体比例大小正确。
在这里插入图片描述
实际使用时
目前我只对glOrtho(左,右,下,上,近,远)的前4个参数有所理解后面2个参数貌似是绘制3d图像时才要用到的,如果要绘制的图像是2d的话可以使用 gluOrtho2D(左,右,下,上)来代替

glOrtho(300.0f, 0.0f, 0.0f, 300.0f, -1.0, 1.0);
// 对这个的理解以0,0点为中心左边有300的宽,右边有0的宽,下边有0的高,上边有300的高

效果如下
在这里插入图片描述
代码

#include <windows.h>
#include <gl/glut.h>

//Rect.cpp

void renderScene(void)
{
    glPointSize(14.0f);
    glClear(GL_COLOR_BUFFER_BIT);   //清空颜色缓冲池
    glBegin(GL_POINTS);
    glVertex2f(0.0f, 0.0f);
    glEnd();
    glFlush();  //执行OpenGL指令列表中的指令
}

void main(void)
{
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);    //设置显示模式
    glutInitWindowSize(500, 500); //设置窗口大小
    glutInitWindowPosition(200, 200);   //设置窗口在屏幕上的位置 
    glutCreateWindow("矩形"); //创建窗口并给出标题
    glutDisplayFunc(renderScene);   //注册显示窗口时回调函数renderScene
    gluOrtho2D(300.0f, 0.0f, 0.0f, 300.0f);
    // glOrtho(300.0f, 0.0f, 0.0f, 300.0f, -1.0, 1.0);
    glClearColor(0.0f, 0.0f, 1.0f, 1.0f);   //使用蓝色清空背景底
    glutMainLoop();     //消息循环(处理操作系统等的消息,例如键盘、鼠标事件等)
}

可以试着改变gluOrtho2D中的参数来改变原点在画面中位置

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐