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

智能推荐

中国移动发布业界首个5G专网产品暨启航计划-程序员宅基地

文章浏览阅读1.5k次。7月22日,中国移动举行5G专网启航计划线上发布会,正式发布5G专网产品、技术、运营三大体系。中国信息通信研究院王志勤副院长、中国移动赵大春副总经理、刘坚、张同须、乔辉等出席活动。基于..._哪些5g是移动在业界首次提出的

[architecture]-ARMV8的一些总结-一篇就够了_arm v8架构参考手册-程序员宅基地

文章浏览阅读8.4k次,点赞5次,收藏62次。ARM、armv8、armv9、arm架构、arm视频、添加vx : arm_2023 获取更多资料, arm资料、arm下载、arm学习、arm免费、arm课程,PE - processing elementARM体系结构定义了抽象机器的行为,称为处理元素(processing element),通常缩写为PE。与ARM体系结构兼容的实现必须符合处理元素所描述的行为。RISC架构ARM架构是一个精简指令集计算机(RISC)架构,具有以下RISC架构特征:- 一个大的统一寄存器文件。- 一种_arm v8架构参考手册

多维时序 | MATLAB实现RIME-CNN-LSTM-Multihead-Attention多头注意力机制多变量时间序列预测_matlab 概率稀疏自注意力-程序员宅基地

文章浏览阅读1.1k次,点赞20次,收藏17次。多维时序 | MATLAB实现RIME-CNN-LSTM-Multihead-Attention多头注意力机制多变量时间序列预测_matlab 概率稀疏自注意力

计算机和外部通信方式,计算机和外部的通信方式-程序员宅基地

文章浏览阅读2.9k次。计算机和外部交换信息又称为通信(Communication)。按数据传送方式分为并行通信和串行通信两种基本方式。1、并行通信并行通信就是把传送数据的n位数用n条传输线同时传送。其优点是传送速度快、信息率高。并且,通常只要提供二条控制和状态线,就能完成CPU和接口及设备之间的协调、应答,实现异步传输。它是计算机系统和计算机控制系统中常常采用的通信方式。但是并行通信所需的传输线(通常为电缆线)多,增加..._分别写出计算机移动终端连接外围设备的主要方式

ThinkPHP5框架知识付费系统uniapp+mysql可以部署PC+app+公众号+小程序版本-程序员宅基地

文章浏览阅读216次。ThinkPHP5框架知识付费系统uniapp+mysql可以部署PC+app+公众号+小程序版本。导师入住,添加课程和商品,出售后分红提现。vip svip功能。

电源管理(PMIC)TPS63070RNMR、TPS650942A0RSKR、LM5175RHFR器件介绍、应用及特点。-程序员宅基地

文章浏览阅读805次。电源管理(PMIC)TPS63070RNMR、TPS650942A0RSKR、LM5175RHFR器件介绍、应用及特点。_tps63070

随便推点

8086寄存器详解_sc8886寄存器-程序员宅基地

文章浏览阅读7.9k次,点赞34次,收藏78次。引子打算写几篇稍近底层或者说是基础的博文,浅要介绍或者说是回顾一些基础知识,自然,还是得从最基础的开始,那就从汇编语言开刀吧,从汇编语言开刀的话,我们必须还先要了解一些其他东西,像 CPU ,内存这些知识点还是理解深刻一点的比较好,所以这一篇博文就绕着 80x86 CPU 中寄存器的基础部分下手,至于其他的一些将会在后续的博文中介绍 。同时在这里_sc8886寄存器

github删除文件_将GitHub公有仓库变私有仓库-程序员宅基地

文章浏览阅读216次。故事背景主人公croz想将GitHub上Fork过来的项目Real大刀阔斧地修改一番,但是croz发现删删改改的东西太多了,以至于修改之后的项目Push时频繁出错。croz觉得很困扰,于是查阅了GitHub官方文档中的淫巧奇技:Duplicating a repository​help.github.com解决方案croz的GitHub用户名(username)就是自己的名字croz,他Fork的..._把guthub上面的工作设为私有

安装faiss失败如何破解?_error: failed building wheel for faiss-cpu-程序员宅基地

文章浏览阅读2.4k次。这个问题官方已经说了,不支持win下的。所以可能不管是安装-cpu或者-gpu都不行的,无论有没有gpupip install faiss-cpuCollecting faiss-cpu Using cached https://files.pythonhosted.org/packages/6b/79/3fc59c466abcfed5fa9b40915a6564576b7615ac9201eac67156730262c7/faiss-cpu-1.6.3.tar.gzRequirement_error: failed building wheel for faiss-cpu

自动化测试之八大元素定位方式(python3.10+selenium4)_自动化测试tag_name-程序员宅基地

文章浏览阅读7.4k次,点赞12次,收藏103次。元素的定位是自动化测试核心。要操作一个对象,首先要识别定位或找到这个对象。为了实现网页整体布局,我们先要知道,一个元素,是如何定位到页面上的某个位置的,这就是元素定位。_自动化测试tag_name

RHEL 5.1 安装Marvell Yukon网卡驱动_yk51驱动-程序员宅基地

文章浏览阅读1k次。linux下安装Marvell Yukon网卡驱动【提要】 我的主板是华硕P4P800 SE,集成Marvell Yukon网卡,安装redhat linux9后无法识别网卡,故需要费一点折腾了。。最终解决了linux中上网的问题,但引发了windows中无法连接的麻烦,暂时搁着先了。。。(2006-11-25回头圆满解决!)【内容】问题一开始就存在,我就一般在windows系统中寻找资料,下载资源,然后转到linux中,加载windows分区,获取文件。经过一段时间后,终于还是认真解决它好了。在windo_yk51驱动

Windows系统鼠标右键菜单添加打开cmd终端_we右键进入cmd-程序员宅基地

文章浏览阅读1.4k次,点赞3次,收藏2次。直接拷贝上面的一段代码,保存到文本文档,然后把.txt后缀改为.reg,然后右键该文件,点击合并即可。这样,鼠标右键菜单就有open cmd here即在当前路径打开cmd这个选项了,但是这个是普通用户运行cmd。有时候,当要在某个文件夹下打开cmd终端时,如果没有右键菜单快捷方式,就得打开cmd后,使用cd方式进入 当前目录,很麻烦。同时还会添加另一个选项,以管理员身份运行(A) ,这个是以管理员身份运行cmd。文件名:右键在此处运行cmd.reg。以下的脚本,可以帮你解决这个问题。_we右键进入cmd

推荐文章

热门文章

相关标签