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

OpenGL_Learn02

1. 监听窗口,绑定回调函数

#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);std::cout << "变了" << std::endl;
}int main()
{glfwInit();glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);//glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);GLFWwindow* window = glfwCreateWindow(800, 600, "LearnOpenGL", 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)){glfwSwapBuffers(window);glfwPollEvents();}glfwTerminate();return 0;
}

2. 通过监听键盘Esc,是否关闭窗口

#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);std::cout << "变了" << std::endl;
}void processInput(GLFWwindow* window) {if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS) {glfwSetWindowShouldClose(window, true);}
}int main()
{glfwInit();glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);//glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);GLFWwindow* window = glfwCreateWindow(800, 600, "LearnOpenGL", 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)){processInput(window);glfwSwapBuffers(window);glfwPollEvents();}glfwTerminate();return 0;
}

3.  清空屏幕

#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);std::cout << "变了" << std::endl;
}void processInput(GLFWwindow* window) {if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS) {glfwSetWindowShouldClose(window, true);}
}int main()
{glfwInit();glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);//glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);GLFWwindow* window = glfwCreateWindow(800, 600, "LearnOpenGL", 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)){processInput(window);//渲染指令glClearColor(0.2f, 0.3f, 0.3f, 1.0f);glClear(GL_COLOR_BUFFER_BIT);glfwSwapBuffers(window);glfwPollEvents();}glfwTerminate();return 0;
}

 

你好,窗口 - LearnOpenGL CN (learnopengl-cn.github.io)

你好,三角形 - LearnOpenGL CN (learnopengl-cn.github.io)

相关文章:

  • Redis测试新手入门教程
  • SpringBoot2.7.14整合redis7
  • audio 标签动态src 且src是http无法播放问题
  • 数据结构单链表的实现(C语言)
  • 【kubernetes】Debian使用Kubeadm部署Kubernetes失败:Connection Refused
  • 【Linux】权限
  • 京东平台数据分析:2023年9月京东扫地机器人行业品牌销售排行榜
  • 039-第三代软件开发-PDF阅读器
  • 21.12 Python 实现网站服务器
  • Kali安装docker
  • ES6中的class类
  • k8s replicaSet,deployment 学习笔记
  • Prometheus接入AlterManager配置钉钉告警(基于K8S环境部署)
  • Vue Router:让你的应用路由起来!
  • 磁盘调度算法之先来先服务(FCFS),最短寻找时间优先(SSTF),扫描算法(SCAN,电梯算法),LOOK调度算法
  • Apache Pulsar 2.1 重磅发布
  • css的样式优先级
  • js中forEach回调同异步问题
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • Netty 4.1 源代码学习:线程模型
  • Python学习之路13-记分
  • Redis字符串类型内部编码剖析
  • zookeeper系列(七)实战分布式命名服务
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 大整数乘法-表格法
  • 大主子表关联的性能优化方法
  • 对象管理器(defineProperty)学习笔记
  • 力扣(LeetCode)21
  • 实习面试笔记
  • 小程序开发中的那些坑
  • 追踪解析 FutureTask 源码
  • Java总结 - String - 这篇请使劲喷我
  • 阿里云服务器如何修改远程端口?
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • #快捷键# 大学四年我常用的软件快捷键大全,教你成为电脑高手!!
  • (003)SlickEdit Unity的补全
  • (Matalb时序预测)WOA-BP鲸鱼算法优化BP神经网络的多维时序回归预测
  • (Repost) Getting Genode with TrustZone on the i.MX
  • (独孤九剑)--文件系统
  • (十八)三元表达式和列表解析
  • (算法设计与分析)第一章算法概述-习题
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .net core IResultFilter 的 OnResultExecuted和OnResultExecuting的区别
  • .NET DevOps 接入指南 | 1. GitLab 安装
  • .NET Framework .NET Core与 .NET 的区别
  • .net mvc actionresult 返回字符串_.NET架构师知识普及
  • .NET 反射 Reflect
  • .NET 命令行参数包含应用程序路径吗?
  • .NET值类型变量“活”在哪?
  • .NET中GET与SET的用法
  • /etc/skel 目录作用