栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

opengl+qt+vs学习笔记1:软件下载安装以及配置

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

opengl+qt+vs学习笔记1:软件下载安装以及配置

      目前新阶段学习的第一个项目,仅以此文记录我的学习过程。如果有错误的、不全面的地方,欢迎斧正!

      下载软件部分还算简单,感觉顺序也应该不是关键。我安装的是visual studio 2019,OpenGL2以及qt5.14.2。

一、visual studio的安装

       1.官网地址:

Visual Studio: IDE and Code Editor for Software Developers and Teams

随后找到“下载visual studio”并点击选择community版本(个人版)即可,三个版本中只有这个版本是免费的。

  1. 下载完成之后,我们要对VS进行一些配置,这里我就针对vs+opengl+qt的项目进行配置。

当然,如果一开始配置不全,后期也可以根据需要再打开visual studio installer修改其配置,这里花的时间挺长的,需要耐心等等。

 

      2. 至此安装基本完成。注册一个账号便可以开始使用。

二、OpenGL的安装

首先需要注意的是,一定要先安装好vs才能安装OpenGL。

  1. 下载32位的GLFW(这个位数应该是32、64位的都可以,都不会影响后面的使用,但我记得说是安装32位的有个什么优点,另外,它和我们计算机的位数是无关的)。

     下载链接如下:Download | GLFW

     2. GLAD下载链接如下:https://glad.dav1d.de

     

 

需要修改的一个是gl版本,我们选择3.3以上的(具体为什么我也不知道,选太高的能不能运行我也不知道),profile下面选择core,然后点击下面的generate,会看到一个glad.zip,直接下载即可。

至此,准备工作完成。

     3. 这时在VS2019里创建一个新的CPP工程,打开工程所在的文件夹,将glad文件夹下的include文件夹复制到刚才打开的文件夹下,并且也将glfw下include文件夹下的GLFW文件夹复制到刚刚的include文件夹下;

在刚刚打开的工程目录下新建lib文件夹,将glfw文件夹下的lib-vc2017下的两个静态库文件复制到新建的lib文件夹下;

将glad下的src文件夹里的glad.c也复制到工程目录下,右键源文件添加现有项,将glad.c文件添加进去(非常拗口,但慢慢来就行,毕竟我也找不到更合适的语言表达了)

显示如下,当然因为我的项目已经运行过所以会多出几个。

 

     4. 接下来是对项目进行配置,配置过程等如下:

     右键打开工程属性
先在C/C++下附加包含目录按如下配置

然后在链接器配置附加库目录

再点击链接器下输入,进入附加依赖项
添加opengl32.lib,glfw3.lib,msvcrt.lib

在属性里点击右下角应用即可保存设置

 

 

 

     5. 测试

#include 
#include"glad/glad.h"//!!!注意这里,/前面的是h文件的上级目录,可能每个人安装不同,也有不同
#include"GLFW/glfw3.h"
using namespace std;

static void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods)
{
	if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS)
	{
		glfwSetWindowShouldClose(window, GL_TRUE);
	}

}

//vertex shader
const GLchar* vertexShader_Code =
"#version 330 coren"
"layout(location=0) in vec3 aPos;n"
"void main()n"
"{n"
"gl_Position=vec4(aPos.x,aPos.y,aPos.z,1.0);n"
"}";


const GLchar* fragmentShader_Code =
"#version 330 coren"
"out vec4 FragColor;n"
"void main()n"
"{n"
"FragColor=vec4(1.0f, 0.5f, 0.2f, 1.0f);n"
"}";

int main()
{
	//三角顶点
	float vertices[] =
	{
		-0.5f,-0.5f,0.0f,//左下角
		0.5f,-0.5f,0.0f,//右下角
		0.0f, 0.5f,0.0f//顶端角
	};
	glfwInit();//初始化
	glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);//配置GLFW
	glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);//配置GLFW
	glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);//
	glfwWindowHint(GLFW_RESIZABLE, GL_FALSE);

	GLFWwindow* window = glfwCreateWindow(800, 600, "OpenGL", nullptr, nullptr);
	glfwSetKeyCallback(window, key_callback);


	if (window == nullptr)
	{
		cout << "Failed to create GLFW window" << endl;
		glfwTerminate();//terminate the glfw(end the glfw)
		return -1;
	}

	glfwMakeContextCurrent(window);//设置当前openGL上下

	if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
	{
		cout << "Failed to initialize GLAD" << endl;
		return -1;
	}
	//data
	int isSuccess;
	char infoLog[512];
	//vertexShader data
	unsigned int vertexShader;
	vertexShader = glCreateShader(GL_VERTEX_SHADER);
	glShaderSource(vertexShader, 1, &vertexShader_Code, NULL);
	glCompileShader(vertexShader);
	
	glGetShaderiv(vertexShader, GL_COMPILE_STATUS, &isSuccess);
	if (!isSuccess)
	{
		glGetShaderInfoLog(vertexShader, 512, NULL, infoLog);
		cout << "ERROR::VertexShader::Compile_failed" << infoLog << endl;
	}
	else
	{
		cout << "SUCCESS::VertexShader" << endl;
	}

	//fragmentShader Data
	unsigned int fragmentShader;
	fragmentShader = glCreateShader(GL_FRAGMENT_SHADER);
	glShaderSource(fragmentShader, 1, &fragmentShader_Code, NULL);
	glCompileShader(fragmentShader);
	
	glGetShaderiv(fragmentShader, GL_COMPILE_STATUS, &isSuccess);
	if (!isSuccess)
	{
		glGetShaderInfoLog(fragmentShader, 512, NULL, infoLog);
		cout << "ERROR::FragmentShader::Compile_failed" << infoLog << endl;
	}
	else
	{
		cout << "SUCCESS::FragmentShader" << endl;
	}

	//Shader Pragram
	unsigned int shaderProgram;
	shaderProgram = glCreateProgram();
	glAttachShader(shaderProgram, vertexShader);
	glAttachShader(shaderProgram, fragmentShader);
	glLinkProgram(shaderProgram);

	glGetProgramiv(shaderProgram, GL_LINK_STATUS, &isSuccess);
	if (!isSuccess)
	{
		glGetShaderInfoLog(shaderProgram, 512, NULL, infoLog);
		cout << "ERROR::ShaderProgram::Link_failed" << infoLog << endl;
	}
	else
	{
		cout << "SUCCESS::ShaderProgram" << endl;
		glUseProgram(shaderProgram);
		glDeleteShader(vertexShader);
		glDeleteShader(fragmentShader);
	}

	//vectices data
	unsigned int VAO;
	unsigned int VBO;

	glGenVertexArrays(1, &VAO);//获得一个顶点数组对象
	glBindVertexArray(VAO);
	glGenBuffers(1, &VBO);
	glBindBuffer(GL_ARRAY_BUFFER, VBO);
	glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
	glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)0);
	glEnableVertexAttribArray(0);

	glBindBuffer(GL_ARRAY_BUFFER, 0);
	glBindVertexArray(0);

	while (!glfwWindowShouldClose(window))
	{
		glfwPollEvents();//检查有没有触发事件
		glClearColor(0.27f, 0.27f, 0.27f, 1.0f);
		glClear(GL_COLOR_BUFFER_BIT);
		glUseProgram(shaderProgram);
		glBindVertexArray(VAO);
		glDrawArrays(GL_TRIANGLES, 0, 3);
		glfwSwapBuffers(window);//双缓冲(替换窗口的每一个像素值)
	}
	glfwTerminate();
	return 0;
}

 三、Qt插件的安装

1. 安装qt软件

QT下载网址(各版本).
QT(5.12.11)直达界面.

下面这些图都用了别人的,我安装的是qt5.14.2版本,感觉大方向应该不会有问题。

根据操作系统不同,选择相应版本下载

双击运行…

输入QT账号信息,没有需要注册一个


     在下一个界面中需要去勾选编译器,本项目需要勾选的编译器是MSVC32bit和64bit,两个都需要勾选,其他的不会用到。

     Qt插件的安装据我目前所知,不一样的VS版本找的位置不一样,但都是在扩展里面去找,我所用的是VS2019,他的位置就在最上面的菜单栏上(扩展X)。

      点击管理扩展,然后在里面找到qt插件并安装安装结束之后,扩展里就会出现Qt VS Tools,然后重新打开VS,新建项目时会有”QT GUI Application"则说明安装成功。

 到这软件安装完成。

        写博客比我想象的难多了,本来我还打算自己一个字一个字地码,一个步骤一个步骤地截屏,现在看来,是我自己想多了,文章中加了很多别人的东西。链接如下:

(90条消息) OpenGL安装教程_Thinker 123的博客-CSDN博客_opengl安装

(90条消息) QT安装 and VS2019中安装QT插件_8倍的博客-CSDN博客_vs2019安装qt插件

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1000955.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号