当前位置: 首页 > article >正文

C++ OpenGL学习笔记(1、Hello World空窗口程序)

终于抽出时间系统学习OpenGL 教程,同时也一步一步记录怎样利用openGL进行加速计算。

目录

    • 1、环境准备
      • 1.1、库的下载
      • 1.2、库的选择及安装
    • 2、OpenGL第一个项目,Hello World!
      • 2.1、新建hello world控制台项目
      • 2.2、配置openGL环境
        • 2.2.1 包含目录配置
        • 2.2.2 库目录配置
        • 2.2.3 库文件配置
        • 2.2.4 glad.c文件包含
      • 2.3、Hello World主程序代码

1、环境准备

1.1、库的下载

需下载glfw库、glad库
1、glfw库:官方下载地址

在这里插入图片描述

2、glad库:官方下载地址

访问官网后,根据下图配置下载的版本等信息,点击右下角的按钮进入下载界面

在这里插入图片描述在这里插入图片描述

在下载界面,下载压缩包即可,如下图
在这里插入图片描述
这里我也提供一下云盘下载地址,方便学习使用

通过网盘分享的文件:openGL_Lib
链接: https://pan.baidu.com/s/13Piu-gvnDoBylxkjZ5buJQ?pwd=6pk1 提取码: 6pk1 
--来自百度网盘超级会员v5的分享

1.2、库的选择及安装

1、glad.zip文件解压后如下图
在这里插入图片描述
看看文件树如下图,里面没有lib文件,都是源码文件。所以glad.c文件后续跟着工程项目进行加载即可。
在这里插入图片描述
2、glfw-3.4.bin.WIN64.zip解压后如下,工程中重点使用include文件夹和下面各个VS库即可
在这里插入图片描述

我用的是VS2017,lib-vc2017文件夹如下,是个动态库
在这里插入图片描述

2、OpenGL第一个项目,Hello World!

2.1、新建hello world控制台项目

在这里插入图片描述

2.2、配置openGL环境

2.2.1 包含目录配置

在这里插入图片描述

2.2.2 库目录配置

在这里插入图片描述

2.2.3 库文件配置

在这里插入图片描述

2.2.4 glad.c文件包含

把glad.zip解压的src中的glad.c文件拷贝到项目main.cpp同级目录,并且添加进工程里

2.3、Hello World主程序代码

主程序main.cpp文件代码修改如下,一个空的openGL窗口即可弹出

#include <glad/glad.h>
#include "GLFW/glfw3.h"
#include <iostream>

void framebuffer_size_callback(GLFWwindow* window,int width,int height)
{
	glViewport(0, 0, width, height);
}

void processInput(GLFWwindow *window)
{//检测是否有外部输入

	if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS)
	{
		glfwSetWindowShouldClose(window, true);//把关闭状态设置为true

	}
}


int main()
{
	glfwInit();//初始化上下文环境
	glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR,3);//要求opengl 3版本以上
	glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR,3);
	glfwWindowHint(GLFW_OPENGL_PROFILE,GLFW_OPENGL_CORE_PROFILE);//

	GLFWwindow* window = glfwCreateWindow(800, 600, "OpenGL Core", NULL, NULL);//创建窗体
	if (window == NULL)
	{
		std::cout << "Failed to create GLFW window" << std::endl;
		glfwTerminate();
		return -1;
	}

	glfwMakeContextCurrent(window);//上下文绑定窗体

	if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))//初始化函数指针,为下面函数做准备
	{
		std::cout << "Failed to initialize GLAD" << std::endl;
		return -1;
	}

	glViewport(0,0,800,600);//设置需要渲染的视口
	glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);//设置回调函数

	while ( !glfwWindowShouldClose(window))//创建的window关掉后就退出while循环
	{
		processInput(window);//
		glClearColor(0.2f,0.3f,0.3f,1.0f);//设置颜色
		glClear(GL_COLOR_BUFFER_BIT);//用设置的颜色把画布进行清零掉


		glfwSwapBuffers(window);
		glfwPollEvents();
	}
	glfwTerminate();
    std::cout << "Hello World!\n";
	return 0;
}


运行后如下空窗口弹出,本篇完结。
在这里插入图片描述


http://www.kler.cn/a/444257.html

相关文章:

  • iOS + watchOS Tourism App(含源码可简单复现)
  • uniapp图片数据流���� JFIF ��C 转化base64
  • ES搜索原理
  • C语言经典100例
  • 源码分析之Openlayers中OverviewMap鹰眼控件
  • 32单片机串口数据接收、空闲IDLE中断详解
  • 计算机网络-GRE Over IPSec实验
  • 递归读取指定目录下的文件
  • postman免登录步骤
  • AIGC:图像风格迁移技术实现猜想
  • 【多模态】MiniCPM-V多模态大模型使用学习
  • RTR Chaptor12
  • C语言基础:数组(字符数组)
  • url提取
  • HarmonyOS Next应用开发实战:ArkWeb组件使用介绍及使用举例
  • 【原创教程】西门子1500TCP_UDP通信说明大全(下篇)
  • 【多模态实战】在本地计算机上使用小型视觉语言模型【VLM】进行目标计数【附源码】
  • Liblib上面下载的各种模型,如果使用comfy,如何确定其存放的位置?
  • 解析在OceanBase创建分区的常见问题|OceanBase 用户问题精粹
  • 基于asp.net游乐园管理系统设计与实现
  • 【论文阅读】从单张图像到高质量3D模型的快速生成方法
  • Kaggler日志--Day7
  • 无刷电机的概念
  • 【数据集】车内视角拍摄道路路面缺陷数据集1075张3类标签YOLO+VOC格式
  • 前端大数字精度丢失?Choerodon UI 大数字解决方案:精确性与灵活性的结合!
  • WebGIS开发中WKT和GeoJSON互相转换