MENU

计算机图形学(1)

April 24, 2020 • 阅读: 1106 • 笔记&折腾



利用视口绘制在同一个窗口中绘制四个几何图形:

#include <windows.h>
#include <GL/glut.h>
#include <math.h>

void Viewport(int x,int y,int w,int h){
    glViewport(x,y,w,h); //定义视口
    glLoadIdentity(); //消除其他视口缓存
}

void Paint(){
    //计算视区大小及位置
    int w = glutGet(GLUT_WINDOW_WIDTH) / 2; //程序窗口宽度 / 2
    int h = glutGet(GLUT_WINDOW_HEIGHT) / 2; //程序窗口高度 / 2
    glClearColor(1,1,1,1); //白色背景
    glClear(GL_COLOR_BUFFER_BIT); // 清除颜色缓存

    Viewport(0,0,w,h); //左下视口
    glColor3f(0.8,0.8,0.3); //设置正方形颜色
    glRectf(-0.8,-0.8,0.8,0.8); //定义正方形

    Viewport(w,0,w,h); //右下视口
    glColor3f(0.2,0.2,0.3); //球体颜色
    glRotatef(-90,1,0,0); //调整两极方向
    glutWireSphere(0.8,24,12);//线框球体

    Viewport(0,h,w,h); //左上
    glRotatef(30,1,1,0); //调整立体方向
    glutWireCube(1); //线框立方体,边长为1

    Viewport(w,h,w,h); //右上
    glColor3f(0.8,0.5,0.8); //颜色
    glutSolidTeapot(0.6); //定义犹他茶壶

    glFlush(); //强制OPENGL命令序列在有限时间内完成执行
}
int main(int argc, char* argv[]){
    glutInit(&argc, argv); //初始化
    //设置程序窗口的显示模式(单缓存,RGBA颜色模式,默认值)

    //glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA);
    glutInitWindowPosition(100,100); //设置程序窗口在屏幕上的位置
    glutInitWindowSize(300,300); //设置程序窗口的大小
    glutCreateWindow("四个几何图形"); //设置窗口标题
    glutDisplayFunc(Paint); //指定场景绘制循环函数,必须
    glutMainLoop(); //开始循环执行OpenGL命令
}




Last Modified: February 6, 2021