C++/OpenGL应用程序

图像应用程序大部分是 C++ 编写,OpenGL 调用实现与 3D 渲染相关任务将会使用一些扩展库: GLEW、GLM、GLFW、SOLL2 等。

GLFW 库包含 GLFWwindow 类,我们可以在其上进行 3D 场景绘制。OpenGL 也向我们提供了用于 GLSL 程序载入可编程着色阶段并对其进行编译的命令。最后 OpenGL 使用缓冲将 3D 模型和其他相关图像数据发送到管线中。

复制代码
GLFWwindow 实例并为其设置背景颜色

初始化 GLFW
实例化 GLFWwindow
初始化 FLEW 
调用 init()
重复调用 display() 函数
cpp 复制代码
glClearColor() //命令指定了清楚背景时用的颜色,(1.0, 0.0, 0.0, 1.0) R G B 不透明
glClear(GL_COLOR_BUFFER_BIT);		// 红色填充颜色缓冲区 
cpp 复制代码
// 创建 GLFW 窗口, 参数为 宽,高,名称,全屏显示,资源共享
GLFWwindow* window = glfwCreateWindow(600, 600, "Chapter2 - 2.1", nullptr, nullptr);	
cpp 复制代码
#include <GL/glew.h>
#include <GLFW/glfw3.h>


#include <iostream>


using namespace std;

void init(GLFWwindow* window)
{

}

void display(GLFWwindow * window, double currentTime)
{
	glClearColor(1.0, 0.0, 0.0, 1.0);	// RGB 透明
	glClear(GL_COLOR_BUFFER_BIT);		// 红色填充颜色缓冲区
}

int main()
{	
	if (!glfwInit()) { exit(EXIT_FAILURE); }		// 初始化
	glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);	// 主版本
	glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 6);	// 小版本
	// 创建 GLFW 窗口, W, H, TileName, 全屏显示, 资源共享
	GLFWwindow* window = glfwCreateWindow(600, 600, "Chapter2 - 2.1", nullptr, nullptr);	
	glfwMakeContextCurrent(window);	// OpenGL 上下文与 GLFW 窗口关联

	if (glewInit() != GLEW_OK) { exit(EXIT_FAILURE); }	// 初始化
	glfwSwapInterval(1);	// 开启垂直同步

	init(window);

	// 简单的渲染循环
	while (!glfwWindowShouldClose(window)) {
		display(window, glfwGetTime());
		glfwSwapBuffers(window);
		glfwPollEvents();
	}

	glfwDestroyWindow(window);// 销毁窗口
	glfwTerminate();		  // 关闭窗口
	exit(EXIT_SUCCESS);
	return 0;
}
相关推荐
QiLinkOS10 小时前
从技术到资产的跃迁:企业专利布局的深层逻辑
c语言·数据结构·c++·单片机·嵌入式硬件·算法·开源
一只鹿鹿鹿10 小时前
信息化项目管理规范(参考Word文件)
java·大数据·运维·开发语言·数据库
XGeFei10 小时前
python中子线程与主线程的关系
开发语言·python
Chase_______10 小时前
【Java杂项】final 关键字详解:变量、方法、类限制与引用可变性
java·开发语言·python
ruxingli10 小时前
Golang iota详解
开发语言·后端·golang
我材不敲代码10 小时前
Python venv 虚拟环境从入门到精通 + uv 高性能替代工具实战指南
开发语言·python·uv
l1t11 小时前
DeepSeek总结的使用实体-组件-系统和基于存在性处理进行Python编程18-20
开发语言·python
磊 子11 小时前
STL之deque和list以及两者与vector的对比
开发语言·c++·list
凤山老林11 小时前
DDD(领域驱动设计)在复杂业务系统中的落地指南
java·开发语言·数据库·ddd·领域驱动
郝学胜_神的一滴11 小时前
CMake 012:Linux 下动态库与可执行程序的单文件构建
c++·cmake