前言
这个学期有选了计算机图形学这门课程。第一周上课老师的作业便是用OpenGL实现直线,那我就写一篇详细教程吧!
Mac下的Xcode要先配置OpenGL,看这篇教程配置
https://blog.csdn.net/babybabyup/article/details/79658976直接上代码
//
// main.cpp
// opengl_helloword
//
// Created by Nick on 2018/3/22.
// Copyright © 2018年 明明哥. All rights reserved.
//
#include <iostream>
#include <GLUT/GLUT.h>
void drawline() {
//清除颜色缓冲区,即窗口的背景色
glClear(GL_COLOR_BUFFER_BIT);
//设置当前绘图使用的颜色
glColor3f(0.0f,0.0f, 0.0f);
GLfloat curSizeLine=5;
glLineWidth(curSizeLine);
glBegin(GL_LINES);
glVertex3f(25.0f,160.0f,0.0f);
glVertex3f(225.0f,160.0f,0.0f);
glEnd();
glFlush();
}
//改变大小时调用的函数
void ChangeSize(GLsizei w,GLsizei h)
{
if (h==0) {
h=1;
}
//设置视区尺寸
glViewport(0, 0, w, h);
//重置坐标系统,使用投影变换复位
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
if (w<=h) {
glOrtho (0.0f,250.0f, 0.0f,250.0f*h/w, 1.0f, -1.0f);
}else
{
glOrtho (0.0f,250.0f*w/h, 0.0f,250.0f, 1.0f, -1.0f);
}
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
//用于初始化,常用来设置场景的渲染状态
void SetupRC(void)
{
glClearColor(1.0f,1.0f, 1.0f,1.0f);
}
int main(int argc,char** argv)
{
glutInit(&argc, argv);
//初始化GLUT库OpenGL窗口的显示模式
glutInitDisplayMode (GLUT_SINGLE |GLUT_RGB |GLUT_DEPTH);
glutInitWindowSize (500,500);
glutInitWindowPosition (100,100);
glutCreateWindow (argv[0]);
glutDisplayFunc(drawline);
glutReshapeFunc(ChangeSize);
SetupRC();
glutMainLoop();
return 0;
}
- 当然作业还要求代码解释
- 用到的很多函数是OpenGL的库函数
- 总体的思路就是先打开窗口再进行操作