大白糖奶兔的Blog
大白糖奶兔的Blog
Dev-Cpp编写OpenGL程序流程

前言

编写像OpenGL这种图形化的程序,最好使用像Visual Studio、Clion、Qt这种IDE(集成开发环境)

但是安装过程略麻烦,如果懒得安装的话,理论上可以用Visual C++或者Dev C++代替

接下来我会介绍一下在Dev-Cpp上创建一个OpenGL图形应用程序的步骤方法

准备工作,需要以下文件

  • glut32.lib
  • libglu32.a
  • libopengl32.a
  • glut.h

第二个和第三个文件是Dev-Cpp自带的OpenGL库文件,确保在你的Dev-Cpp安装目录下的lib文件夹中有即可

例如我的安装目录如下,可以对照着我的路径在资源管理器中搜索一下,看看能不能找到

D:\Program Files\Dev-Cpp\MinGW32\lib

第一个文件时OpenGL的glut库中所包含的一个文件,为了规范操作也是为了方便使用,建议手动复制该文件到Dev-Cpp的安装目录下lib文件夹,方便在Dev-Cpp中起作用(也可以不复制,只要在写程序的过程中可以找到该文件的位置即可)

第四个文件是头文件,如果没有需要手动复制到安装目录下的include文件夹

D:\Program Files\Dev-Cpp\MinGW32\include

如果听不懂我在说什么,可以继续往下看

检查下面两个文件

https://yczbest.cn/wp-content/uploads/2020/09/wp_editor_md_8c6c22f373c7d478761050e85053abd5.jpg

https://yczbest.cn/wp-content/uploads/2020/09/wp_editor_md_b1020d61c740c17ffdc333691704d620.jpg

复制上面的文件到

D:\Program Files\Dev-Cpp\MinGW32\lib
https://yczbest.cn/wp-content/uploads/2020/09/wp_editor_md_0aa7cba63e7c68edc473b37ebff18909.jpg

正式开始

1、打开Dev-Cpp,新建OpenGL项目

https://yczbest.cn/wp-content/uploads/2020/09/wp_editor_md_e378a2b82bacbba1fa58eec1f537fbed.jpg
https://yczbest.cn/wp-content/uploads/2020/09/wp_editor_md_f7a851c7ddc369307a2faf1ec427c3f7.jpg

这里解释一下为什么不能直接新建源代码编译运行:我们在编写OpenGL程序的时候要依赖上面那三个文件

  • glut32.lib”
  • libglu32.a”
  • libopengl32.a”

所以在编译的时候就项目而言要手动添加这三个依赖文件,而源代码做不到这一点,所以只能以项目的形式新建编写

2、选择醒目保存位置

https://yczbest.cn/wp-content/uploads/2020/09/wp_editor_md_9e1ef7c72c4001d09675940fc0ec18f0.jpg

2、编写程序

新建完项目之后,Dev-Cpp提供了一个样例程序,这里我们删掉它的程序,自己写一个程序

一个茶壶(学习通中有)

#include<GL/glut.h>
#pragma comment(linker,"/subsystem:windows /entry:mainCRTStartup")
//连接器linker调用mainCRTStartup入口函数,再调用自定义main函数
//#pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"")

int main(int argc,char** argv) {
    //函数声明,如果main函数在自定义函数下面,则不需要声明
    void SetupRC();
    void RenderScene();
    glutInit(&argc, argv);//初始化glut库的函数,以便使用

    glutInitDisplayMode(GLUT_SINGLE);//设置颜色缓冲区及颜色模式为单焕存模式
    glutInitWindowPosition(300, 100);//设置窗口位置
    glutInitWindowSize(600, 600);//设置窗口大小
    glutCreateWindow("窗口-小智");//设置窗口标题

    SetupRC();//设置图形渲染环境

    glutDisplayFunc(RenderScene);//回调函数绘制几何体

    glutMainLoop();

    return 0;
}
//设置窗口属性,函数来源于gl.lib
void SetupRC() {
    glClearColor(0.0f, 0.0f, 0.0f, 5.0f);//前三个为RGB值,最后为不透明度
    glViewport(0, 0, 500, 500);//设置视图的位置和大小
    glOrtho(-1.0,1.0,-1.0,1.0,-2.0,2.0);//用垂直矩阵与当前矩阵相乘并设置裁剪窗口
}
void RenderScene() {
    glClear(GL_COLOR_BUFFER_BIT);//设置颜色缓冲区,清楚颜色缓冲区内容
    glColor3f(255.0f, 255.0f, 255.0f);//RGB颜色白色 设置背景颜色
    glutWireTeapot(0.5);//线框茶壶
    //绘制图形,参数为显示的比例,1为原始比例
    //glutSolidTeapot(0.5);
    glFlush();//强制刷新缓冲区,输出缓冲区内容到屏幕
}

编写完成之后编译会发现下面有一堆错误[linker error]

https://yczbest.cn/wp-content/uploads/2020/09/wp_editor_md_267e267b454cf9aed0cac3f07a4cf57f.jpg

这个时候我们就需要手动将上面三个的依赖文件添加一下一下了(头文件不算依赖文件)

https://yczbest.cn/wp-content/uploads/2020/09/wp_editor_md_77a4c9e48a11c4fa788520cecbbafb9d.jpg
https://yczbest.cn/wp-content/uploads/2020/09/wp_editor_md_6fe49f0646ee1ab65d80fca7b981726d.jpg

点击后,找到上面的三个文件,添加进去

https://yczbest.cn/wp-content/uploads/2020/09/wp_editor_md_1f671f1e91018844df5d7a16a2035f90.jpg
https://yczbest.cn/wp-content/uploads/2020/09/wp_editor_md_eab95a0797125a9670a3070ab2da351e.jpg
https://yczbest.cn/wp-content/uploads/2020/09/wp_editor_md_c9aea35b63eae503b03ea478f0e7e1df.jpg

添加完毕

https://yczbest.cn/wp-content/uploads/2020/09/wp_editor_md_c352413bf35bcc960f88149b6b9b9de7.jpg

点击确定
点击编译

https://yczbest.cn/wp-content/uploads/2020/09/wp_editor_md_82ece0c17c0e0cf46f2168a909fa7edb.jpg

发现依然报错!

hhhhhh还差最后一步,在代码开头加上

#include<Windows.h>

完整代码

#include<Windows.h> 
#include<GL/glut.h>
#pragma comment(linker,"/subsystem:windows /entry:mainCRTStartup")
//连接器linker调用mainCRTStartup入口函数,再调用自定义main函数
//#pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"")

int main(int argc,char** argv) {
    //函数声明,如果main函数在自定义函数下面,则不需要声明
    void SetupRC();
    void RenderScene();
    glutInit(&argc, argv);//初始化glut库的函数,以便使用

    glutInitDisplayMode(GLUT_SINGLE);//设置颜色缓冲区及颜色模式为单焕存模式
    glutInitWindowPosition(300, 100);//设置窗口位置
    glutInitWindowSize(600, 600);//设置窗口大小
    glutCreateWindow("窗口-小智");//设置窗口标题

    SetupRC();//设置图形渲染环境

    glutDisplayFunc(RenderScene);//回调函数绘制几何体

    glutMainLoop();

    return 0;
}
//设置窗口属性,函数来源于gl.lib
void SetupRC() {
    glClearColor(0.0f, 0.0f, 0.0f, 5.0f);//前三个为RGB值,最后为不透明度
    glViewport(0, 0, 500, 500);//设置视图的位置和大小
    glOrtho(-1.0,1.0,-1.0,1.0,-2.0,2.0);//用垂直矩阵与当前矩阵相乘并设置裁剪窗口
}
void RenderScene() {
    glClear(GL_COLOR_BUFFER_BIT);//设置颜色缓冲区,清楚颜色缓冲区内容
    glColor3f(255.0f, 255.0f, 255.0f);//RGB颜色白色 设置背景颜色
    glutWireTeapot(0.5);//线框茶壶
    //绘制图形,参数为显示的比例,1为原始比例
    //glutSolidTeapot(0.5);
    glFlush();//强制刷新缓冲区,输出缓冲区内容到屏幕
}

点击编译、运行

https://yczbest.cn/wp-content/uploads/2020/09/wp_editor_md_25c15e89f049c88e86bb8b199048dbb1.jpg

教程结束

发表评论

textsms
account_circle
email

大白糖奶兔的Blog

Dev-Cpp编写OpenGL程序流程
前言 编写像OpenGL这种图形化的程序,最好使用像Visual Studio、Clion、Qt这种IDE(集成开发环境) 但是安装过程略麻烦,如果懒得安装的话,理论上可以用Visual C++或者Dev C++代替 接…
扫描二维码继续阅读
2020-09-22
Title - Artist
0:00