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

智能推荐

基于java的网上购物系统/ACCESS图书订单购书/网上图书销售系统-1009-源码+说明资料-程序员宅基地

文章浏览阅读871次,点赞12次,收藏6次。前台模块主要由商品销售排行,新品展示,热销商品展示,推荐商品展示,查看订单,查看及修改购物车信息,注册和修改用户信息,及管理员登录管理后台等等组成。后台模块包括维护商品类别,维护商品信息,订单的管理,公告管理,管理员管理,查看销售排行统计等等部分。其毕业设计论文力求观点鲜明,概念清楚,语言流畅,标点符号清楚、准确,文字精炼,内容正确,条理分明,结构严谨;2、 为管理员提供公告管理、商品管理、订单管理、会员管理、系统用户管理、新闻管理、留言管理等等。

Mysql存储过程异常处理_get diagnostics condition 1-程序员宅基地

文章浏览阅读364次。-- 异常处理DECLARE result_code CHAR(5) DEFAULT '00000'; DECLARE msg TEXT;DECLARE set_error_code CHAR(1); DECLARE result_info,success_info TEXT;DECLARE a float;DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN GET DIAGNOSTICS CONDITION 1 resu._get diagnostics condition 1

天地图将开发移动端、接入实景三维、丰富历史影像、多维数据等_天地图支持移动端吗-程序员宅基地

文章浏览阅读626次,点赞22次,收藏9次。根据《实施方案》,新平台建设要坚持“问题导向、创新驱动、统筹集约、安全可控”原则,综合运用新理念、新技术、新模式,推动天地图由单一地理信息服务向综合地理信息服务转型,从数据资源、服务功能、更新效率、运行支撑等方面进行全面升级,形成与经济社会发展相适应的地理信息公共服务能力,助力数字中国建设和数字经济发展。在基础核心软件方面,到2030年,新平台全面发展,数据资源更加丰富,服务功能更加智能,联动更新更加高效,运行支撑更加稳定,政府地理信息资源更加开放,各类地理信息应用更加深入,地理信息综合服务能力全面提升。_天地图支持移动端吗

如何编写和管理自动化测试用例_自动化测试  以编码的方式写脚本时,你们的测试用例是如何管理的?-程序员宅基地

文章浏览阅读906次,点赞20次,收藏24次。编写测试用例需要用到开发语言,以Python为例,python提供了很多测试框架,比如前面文章介绍的unittest、pytest等,测试框架中提供了丰富的测试功能和API,可以方便编写测试用例,且支持批量执行和生成测试报告。手工测试用例则由测试人员手动执行,人工记录测试结果。相比手工测试用例,自动化测试用例更快、更准确、更可靠、容易重复执行,且每次执行的结果具有一致性,主要用于回归测试。4)进行测试用例监控和收集,定期收集各种测试用例数据信息,包括运行状态、执行结果、错误日志等,便于问题的发现和解决。_自动化测试  以编码的方式写脚本时,你们的测试用例是如何管理的?

深度解析用户画像标签体系构建方法_人物画像标签体系呈现方式-程序员宅基地

文章浏览阅读782次。用户画像,即用户信息标签化,通过收集用户的社会属性、消费习惯、偏好特征等各个维度的数据,进而对用户或者产品特征属性进行刻画,并对这些特征进行分析、统计,挖掘潜在价值信息,从而抽象出用户的信息全貌。举个用户年龄标签的例子。用户标签是整个系统的数据基础,是链接标签系统和画像系统的桥梁。_人物画像标签体系呈现方式

总结了一些很实用值得收藏的站点-程序员宅基地

文章浏览阅读1w次,点赞10次,收藏72次。目录VR相关个人站点人工智能优秀网站创意十足图标库在线工具在线简历官方网站数据分析工具炫酷特效社区素材下载视频学习配色方案静态资源库音效素材库Hove特效Wordpress值得收藏电子书网站导航资源下载边学边玩VR相关站点名称描述标签VR网站仓库汇集了国外涉及到VR的大部分知名网站VR、网站导航个人站点站点名称描述标签10081677wc字节跳动公司某前端员工的博客博客、字节跳动、前端.

随便推点

省去Set、Get方法_省去set/get-程序员宅基地

文章浏览阅读530次。在IDEA中,可以通过安装 lombok-plugin-0.19-2018.1 插件,来省去经常要写的Set、Get方法。离线安装插件下载地址http://plugins.jetbrains.com/plugin/6317-lombok-plugin 安装方法:可以参考(离线安装、在线安装)https://blog.csdn.net/LitongZero/article/..._省去set/get

再谈“我是怎么招聘程序员的”-程序员宅基地

文章浏览阅读557次。http://coolshell.cn/articles/4506.html 我以前写过一篇“我是怎么招聘程序员的”的文章(在CSDN那里有很多人进行了回复)。今天,我想再谈谈关于招聘和面试这方面的东西,主要是以下这些原因:近半年来我在进行了大量的招聘工作,对面试有一些新的体会。酷壳最近发布了几篇趣味面试题(面试题一,面试题二,面试题三),从回复

python中类的定义_python 类中定义类-程序员宅基地

文章浏览阅读1.4k次。广告关闭腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元!现有自定义类(color.py)如下,类位于路径’userschuxingpythontest’下:class color(object): def __init__(self, red, green, blue): self.red = red; self.green = gree..._python类里面定义类

Minecraft服务器badly compressed packet报错解决方法-程序员宅基地

文章浏览阅读548次,点赞9次,收藏6次。虽然写着1.16.4但是1.16.5也可以使用,这个MOD也有其他版本的,找到对应版本安装即可。因为已经解决了问题所以懒得改回去截图了,随便找的网图。在服务端和客户端都安装。_badly compressed packet

iOS开发除了XCode还需要掌握的8个重要工具,让您开发更容易_不用xcode开发ios应用-程序员宅基地

文章浏览阅读3.4k次。在我的开发人员生活中,我搜索了可以在开发过程中帮助我的工具,并在本文中为您收集了我喜欢的工具。1、Sherlock。在大型项目中,xCode 设计过程对我们来说是不够的。Sherlock在开发过程中加快了我们的工作并提高了我们的生产力。如您所知,您等待很长时间才能看到您在 xCode 中设计的屏幕和 UI 组件(谈论视图层次结构)。即使在应用程序启动后访问 UI 组件属性也需要时间。使用 Sherlock,屏幕打开速度非常快,您可以在很短的时间内看到 UI 组件的所有功能。通过打开的屏幕,您可以以有意_不用xcode开发ios应用

Visual Studio 2015 小技巧_得勾选“从父级或项目默认设置集成”-程序员宅基地

文章浏览阅读574次。Tips and Tricks for Visual Studio https://msdn.microsoft.com/en-us/library/dn320181.aspx_得勾选“从父级或项目默认设置集成”

推荐文章

热门文章

相关标签