0.参考书
计算机图形图像技术 (第二版)中国矿业大学
1.理论知识
FreeGLUT是一个开源的软件库,它是OpenGL Utility Toolkit(GLUT)的一个免费替代品,软件配置内容和书本内容一致。GLUT最初是由Mark Kilgard开发的,用于帮助OpenGL程序开发者创建和管理窗口、处理输入事件以及进行一些基本的2D绘图,而无需关注不同操作系统下的窗口系统细节。
FreeGLUT的主要特点包括:
- 跨平台性:FreeGLUT可以在多种操作系统上运行,包括Windows、Linux和Mac OS X。
- 功能兼容:它尽可能地保持了与原始GLUT库的兼容性,使得原来使用GLUT的程序可以较为容易地迁移到FreeGLUT。
- 扩展功能:除了GLUT提供的功能外,FreeGLUT还添加了一些新的功能,比如更丰富的字体支持和更多的菜单功能。
- 开源:作为一个开源项目,FreeGLUT允许用户自由使用、修改和分发。
FreeGLUT对于OpenGL初学者和专业人士都是一个很有用的工具,因为它简化了OpenGL程序开发中的许多繁琐任务,使得开发者可以专注于图形渲染的核心部分。它是学习OpenGL和开发OpenGL应用程序时常用的库之一。
2.开始实践
1.下载FreeGLUT库文件
FreeGLUT链接:Index of /files/software/development/GLUT (transmissionzero.co.uk)
下载下面这个压缩包
2.Clion新建一个C++项目
2.解压freeglut压缩包
把所有文件夹放入项目:
效果如下 :
- bin:这个里面放的是exe运行库.llb
- include:程序头文件.h
- lib:链接库.a
3.修改CMakeLists.txt(用来配置CMake程序环境的)
# 设置CMake的最低版本要求
cmake_minimum_required(VERSION 3.27)
# 设置项目的名称
project(Demo1)
# 设置C语言标准为C99
set(CMAKE_C_STANDARD 99)
# 指定头文件所在的目录
include_directories(include)
# 指定库文件所在的目录
link_directories(lib/x64)
# 设置编译输出的可执行文件目录
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY bin)
# 添加可执行文件,Demo1是由main.cpp编译而成的
add_executable(Demo1 main.cpp)
# 为Demo1链接所需的库文件libfreeglut.a opengl32.dll libglu32.a
target_link_libraries(Demo1 libfreeglut.a opengl32.dll libglu32.a)
修改成这样,然后点击上面这个同步按键
4.把bin的x64的 freeglut.dll 复制到cmake build debug的 bin里面
5.修改main.cpp
#include "include/GL/freeglut.h"
void init() {
glClearColor(0.0, 0.0, 0.0, 0.0);
glMatrixMode(GL_PROJECTION); // 设置投影矩阵
glLoadIdentity(); // 重置当前矩阵为单位矩阵
gluPerspective(30.0, 1.0, 1.0, 100.0); // 设置透视投影,视场角=30度,宽高比=1,近=1,远=100
glMatrixMode(GL_MODELVIEW); // 设置模型视图矩阵
}
void display() {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // 清空颜色缓冲区和深度缓冲区
glLoadIdentity(); // 重置当前矩阵为单位矩阵
glTranslatef(0.0, 0.0, -6.5); // 远移6.5单位
glRotatef(30.0, 1.0, 1.0, 0.0); // 绕(1, 1, 0)旋转30度
glutWireCube(3.0); // 绘制线框立方体,半径为1.5
glFlush(); // 刷新绘图
}
void reshape(int w, int h) {
glViewport(0, 0, (GLsizei)w, (GLsizei)h); // 设置视口
glMatrixMode(GL_PROJECTION); // 设置投影矩阵
glLoadIdentity(); // 重置当前矩阵为单位矩阵
if (w <= h) {
glOrtho(-3.0, 3.0, -3.0 * (GLfloat)h / (GLfloat)w, 3.0 * (GLfloat)h / (GLfloat)w, -10.0, 10.0);
}
else {
glOrtho(-3.0 * (GLfloat)w / (GLfloat)h, 3.0 * (GLfloat)w / (GLfloat)h, -3.0, 3.0, -10.0, 10.0);
}
glMatrixMode(GL_MODELVIEW); // 设置模型视图矩阵
}
int main(int argc, char **argv) {
glutInit(&argc, argv); // 初始化GLUT库
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); // 设置显示模式:单缓冲、RGB颜色模型
glutInitWindowSize(800, 500); // 设置窗口大小
glutCreateWindow("OpenGL 简单示例"); // 创建窗口并设置标题
init(); // 调用初始化函数
glutDisplayFunc(display); // 设置显示回调函数
glutReshapeFunc(reshape); // 设置重绘回调函数
glutMainLoop(); // 进入GLUT事件处理循环
return 0;
}
6.点击运行
3.你完成了图形开发的基础工作
点一个关注吧ξ( ✿>◡❛)