CLion MinGW 快速配置 OpenGL GLUT 环境的方法(配图)_clion 导入glut-程序员宅基地

技术标签: 笔记  

直接在项目文件夹内配置,不需要到处复制的方法。

关于 MinGW 的 配置跳过,可以参考https://blog.csdn.net/zwx19921215/article/details/83306119

配置 OpenGL 步骤:

  1. 首先下载freeglut https://www.transmissionzero.co.uk/software/freeglut-devel/ 选择for MinGW版本的
    在这里插入图片描述
  2. 打开压缩包,里面有bin,include,lib三个文件夹
    在这里插入图片描述
  3. 创建项目,将 include 和 lib 文件夹复制到项目文件夹内(我此时将其命名为 OpenGL),将 /bin/freeglut.dll 复制到 /cmake-build-debug/bin 内
    在这里插入图片描述
    在这里插入图片描述
  4. 配置 CMakeLists.txt,将第一行以下改为
project(OpenGL) #填你的项目名

include_directories(include)
link_directories(lib/x64)

set(CMAKE_C_STANDARD 14) #我选的是 C++14 版本
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY bin)

#测试
add_executable(main main.cpp) #前为编译完成后的exe文件名,随便写就行了, 后面是 cpp 源文件的相对路径
target_link_libraries(main libopengl32.a libfreeglut.a glu32.dll) #链接对应的库文件

测试代码:

#include <GL/glut.h>

GLsizei winWidth = 600, winHeight = 500;

GLubyte label[36] = {
    'J', 'a', 'n', 'F', 'e', 'b', 'M', 'a', 'r',
                     'A', 'p', 'r', 'M', 'a', 'y', 'J', 'u', 'n',
                     'J', 'u', 'l', 'A', 'u', 'g', 'S', 'e', 'p',
                     'O', 'c', 't', 'N', 'o', 'v', 'D', 'e', 'c'};

GLint  dataValue[12] = {
    420, 342, 324, 310, 262, 185, 190, 196, 217, 240, 312, 438};

void initWindow(int argc, char* argv[]) {
    
    glutInit(&argc, argv);
    glutInitWindowSize(winWidth, winHeight);
    glutInitWindowPosition(100, 100);
    glutCreateWindow("P105");
}

void initBackground() {
    
    glClearColor(1, 1, 1, 0);
    glMatrixMode(GL_PROJECTION);
    //glOrtho(0, winWidth, 0, winHeight, -1, 1);
    gluOrtho2D(0, winWidth, 0, winHeight);
}

void lineGraph() {
    
    GLint xRaster = 25, yRaster = 150;

    glClear(GL_COLOR_BUFFER_BIT);
    glColor3d(0, 0, 1);

    glBegin(GL_LINE_STRIP);
    for (GLint k = 0; k < 12; k ++) {
    
        glVertex2i(xRaster + k * 50, dataValue[k]);
    }
    glEnd();

    glColor3d(1, 0, 0);
    for (GLint k = 0; k < 12; k ++) {
    
        glRasterPos2i(xRaster + k * 50, dataValue[k] - 4);
        glutBitmapCharacter(GLUT_BITMAP_9_BY_15, '*');
    }

    glColor3d(0, 0, 0);
    xRaster = 20;
    for (GLint month = 0; month < 12; month ++) {
    
        glRasterPos2i(xRaster, yRaster);
        for (GLint k = 3 * month; k < 3 * month + 3; k ++) {
    
            glutBitmapCharacter(GLUT_BITMAP_HELVETICA_12, label[k]);
        }
        xRaster += 50;
    }
    glFlush();
}

void barChart() {
    
    GLint xRaster = 20, yRaster = 150;

    glClear(GL_COLOR_BUFFER_BIT);

    glColor3f(1, 0, 0);
    for (GLint k = 0; k < 12; k ++) {
    
        glRecti(20 + k * 50, 165, 40 + k * 50, dataValue[k]);
    }

    glColor3d(0, 0, 0);
    for (GLint month = 0; month < 12; month ++) {
    
        glRasterPos2i(xRaster, yRaster);
        for (GLint k = 3 * month; k < 3 * month + 3; k ++) {
    
            glutBitmapCharacter(GLUT_BITMAP_HELVETICA_12, label[k]);
        }
        xRaster += 50;
    }
    glFlush();
}

void winReshapeFcn(GLint newWidth, GLint newHeight) {
    
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(0, (GLdouble)newWidth, 0, (GLdouble)newHeight, -1, 1);
    glClear(GL_COLOR_BUFFER_BIT);
}

int main(int argc, char* argv[]) {
    
    initWindow(argc, argv);
    initBackground();
    //glutDisplayFunc(lineGraph);
    glutDisplayFunc(barChart);
    glutReshapeFunc(winReshapeFcn);
    glutMainLoop();
    return 0;
}

生成以下结果:
在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43848437/article/details/107396826

智能推荐

自己编写的matlab zigzag排序算法_matlab 矩阵zigzag排序-程序员宅基地

文章浏览阅读2.2k次。%%%%%%%%%%%%%%%%%Copyright:wzr1201 %%%Data:2013-05-08%%%%%%%%%%%%%%clear;clc;N=512;A=randint(N,N,[2,10]); %N-by-N, random array of integerslen=N*N;B=zeros(1,len);%zigzag排序后的_matlab 矩阵zigzag排序

R语言使用rnbinom函数生成符合负二项分布的随机数、使用plot函数可视化符合负二项分布的随机数(Negative binomial distribution)_r语言中怎么生成服从负二项分布的随机数-程序员宅基地

文章浏览阅读1.2k次,点赞12次,收藏11次。R语言使用rnbinom函数生成符合负二项分布的随机数、使用plot函数可视化符合负二项分布的随机数(Negative binomial distribution)_r语言中怎么生成服从负二项分布的随机数

基于Arduino的foc控制1——开环速度控制——有事随缘更新中_arduino foc-程序员宅基地

文章浏览阅读348次。【代码】Arduino编写foc控制。_arduino foc

android移动开发软件安装,android studio 开发的安卓软件怎么安装到手机上-程序员宅基地

文章浏览阅读4.3k次,点赞4次,收藏16次。android studio 开发中如何让运用运行在真机中。大体实现方式有3种:分别是:真机通过usb插到电脑上进行开发。android studio 上面编写程序进行编译apk版本,通过其他助手或者adb命令推送到手机中运行。通过wifi连接android studio把编写好的程序运行到真机上。【原理】让运用运行到真机中,需要usb数据线,安装android sdk,一个手机,所有的方案都是通..._android studio怎么样让app出现在手机傻瓜

Mybatis Plus的@TableId标签_mybatisplus tableid-程序员宅基地

文章浏览阅读1.1w次,点赞7次,收藏21次。这个注释主要用于对应数据库表的实体类中的主键属性。写法:@TableId(value=“数据库主键字段”,type = IdType.六种类型之一)例如:@TableId(value=“user_id”,type = IdType.AUTO )IdType的六种类型类型解释AUTO数据库自增IDNONE数据库未设置主键类型(将会跟随全局)INPUT用户输入ID(该类型可以通过自己注册自动填充插件进行填充)ID_WORKER默认的全局唯一ID (idWor_mybatisplus tableid

JavaScript中的map()和sort()方法_js map sort-程序员宅基地

文章浏览阅读2.1k次。JavaScript中的map()和sort()方法_js map sort

随便推点

小孩-高性能Mysql-日志缓冲区-程序员宅基地

文章浏览阅读328次,点赞9次,收藏11次。日志缓冲区(Log Buffer)是 MySQL 数据库的一个关键组件,用于暂时存储事务日志(包括重做日志)的数据,以便后续写入到事务日志文件中。总之,日志缓冲区是 MySQL 数据库中用于暂时存储事务日志数据的重要组件,它在提高数据库性能、减少磁盘 I/O 开销以及支持事务的持久性方面发挥着关键作用。- 日志缓冲区用于临时存储正在进行的事务操作的相关信息,包括重做日志(Redo Log)中的条目。- 日志缓冲区的存在可以提高数据库的性能,因为它允许多个事务的日志条目在内存中缓冲,而不是立即写入到磁盘。

简单3步:微信语音转成mp3-程序员宅基地

文章浏览阅读1.7w次。ACM亚洲区域赛获奖者北漂女程序员 喜欢就关注我吧!在家人眼里,我学的专业就是打杂的。前天我的嫂子问我怎么把微信聊天语音转换成mp3格式保存分享。咔咔咔,教程来了。1,把微信语音信息保存..._微信语音转换mp3

Android 11 selinux 权限设置_android sepolicy private public-程序员宅基地

文章浏览阅读1.4w次,点赞3次,收藏19次。快速阅读框架SELinux介绍看Android怎么写?如何确认是SELinux 约束引起?怎么抓取SELinux Log?修改之后,怎么快速验证?怎么从log中提取有效信息?重点介绍参考文档架构从上层到驱动层的调用流程,但是我们重点关注sContext:注:file_contexts //系统中所有file_contexts安全上下文seapp_contexts //app安全上下文property_contexts //属_android sepolicy private public

常见的文件格式有哪些_常见文件格式类型-程序员宅基地

文章浏览阅读9.3k次,点赞14次,收藏36次。AAAC:MPGE-4高级音频编码ACC:苹果设备的专属音乐格式ACE:Ace压缩档案格式ACT:Microsoft office助手文件AIF,AIFF:音频互交换文件,Silicon Graphic and Macintosh应用程序的声音格式ANI:Windows系统中的动画光标APK:AndroidPackage /Android(安卓)安装包,APK是类似Symbian Sis或Sisx的文件格式。通过将APK文件直接传到Android模拟器或Android手机中执行即可安装APS_常见文件格式类型

大数据之Hadoop图解概述-程序员宅基地

文章浏览阅读2w次,点赞72次,收藏263次。文章目录1 Hadoop是什么2 Hadoop 发展历史(了解)3 Hadoop 三大发行版本(了解)3.1 Apache Hadoop(常用)3.2 Cloudera Hadoop3.3 Hortonworks Hadoop4 Hadoop 优势(4 高)5 Hadoop 组成(面试重点)5.1 HDFS 架构概述5.2 YARN 架构概述5.3 MapReduce 架构概述5.4 HDFS、YARN、MapReduce 三者关系6 大数据技术生态体系7 推荐系统框架图1 Hadoop是什么1)Had_hadoop

sts(myeclipse)引入外部项目后无法启动项目_下载了sts工具后,我其他项目运行不了是什么原因啊?-程序员宅基地

文章浏览阅读2.1k次。 今天遇到一个问题,在使用dubbo服务调用多个注册中心的方法时一直启动不了项目,报错日志无限刷其中引用了两个dubbo注册中心,报错本以为是因为引用的错误,最终排查发现只有项目引入不能直接使用其中的接口还需要在Deployment Assembly中引入该项目为jar包才行..._下载了sts工具后,我其他项目运行不了是什么原因啊?

推荐文章

热门文章

相关标签