我是靠谱客的博主 轻松皮卡丘,最近开发中收集的这篇文章主要介绍计算机图形学(一)——创建一个窗口创建一个窗口,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

创建一个窗口

刚接触计算机图形学,首先是配置GLEW, GLFW, SOIL2等环境,跟着网上的教程一步步来,比较容易上手。
首先需要创建一个窗口,就像是一张画画的纸,接下来的代码是上课内容的记录。

#include <iostream>
#define GLEW_STATIC

#include<GL/glew.h>

#include<GLFW/glfw3.h>
int main()
{
	glfwInit();//初始化
	glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);//括号中的第一个参数:要修改的参数
	glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
	//窗口设置
	glfwWindowHint(GLFW_OPENGL_PROFILE,GLFW_OPENGL_CORE_PROFILE);//GLFW_OPENGL_CORE_PROFILE)表示核心模式

	/*
	glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT,
		GL_TRUE);//for mac
		*/

	glfwWindowHint(GLFW_RESIZABLE, GL_FALSE);//GL_FALSE:不可改变窗口大小;若改成GL_TRUE,可以改变窗口的纵横比
	
	int WIDTH = 800, HEIGHT = 600;//设置窗口的宽和高
	//创建一个窗口对象
	GLFWwindow* window = glfwCreateWindow(WIDTH, HEIGHT,
		"Learn OpenGL ", nullptr, nullptr);
	
	//retina diaplay
	int screenWidth, screenHeight;
	glfwGetFramebufferSize(window, &screenWidth, &screenHeight);//获得屏幕帧缓存大小
	
	if (window == nullptr) {
		std::cout << "Failed to creat GLFW window" << std::endl;
		glfwTerminate();
		return -1;
	}
	glfwMakeContextCurrent(window);//MakeContent:由于实际可以创建很多个窗口,而每次操作只能对一个窗口操作,所以该函数作用:针对当前窗口操作
	glewExperimental = GL_TRUE;

	if (glewInit() != GLEW_OK) {
		std::cout << "Failed to initialize GLEW" << std::endl;
		glfwTerminate();
		return -1;
	}

	
//画图操作
	while (!glfwWindowShouldClose(window)) {//循环画图,在同样的位置画同样的东西
		glViewport(0, 0, screenWidth, screenHeight);//glViewport放在while 里面,不然有些功能无法实现
		//将显存中的图像映射到窗口中显示
		glfwPollEvents();//如果有事件响应的话就从操作系统中获取,如鼠标响应、键盘响应
		glClearColor(0.2f, 0.3f, 0.3f, 1.0f);//颜色,浮点数获取,最后一个参数表示透明度,范围0~1
		glClear(GL_COLOR_BUFFER_BIT);//清除颜色缓存

		glfwSwapBuffers(window);//双缓存模式,在显示信号的过程中,可以画另一个窗口,画完以后可以切断前一个,显示另一个,大大提高的效率
	}
	glfwTerminate();//清理所有资源并退出
	return 0;    
}

运行结果

在这里插入图片描述
如果出现上图的窗口且程序没有报错,说明创建成功。

最后

以上就是轻松皮卡丘为你收集整理的计算机图形学(一)——创建一个窗口创建一个窗口的全部内容,希望文章能够帮你解决计算机图形学(一)——创建一个窗口创建一个窗口所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部