OpenGL(预备篇5)环境配置后的代码

本来还想直接开一个2D游戏的专栏,但是暂时资历不够。

之前的几篇博客是配置环境,这里就是配置环境后写一段测试代码了。

建议是把glew32d.dll这个文件放到和exe同一个目录下,如果是release版本的就是glew32.dll文件。

先别管代码是什么意思,先试试环境是不是配置好了,成功的效果是运行代码后会出现一个窗口,黑色背景里面有个白色方块。

#include<iostream>
#include<GL/glew.h>
#include<GLFW/glfw3.h>
#include<glm/vec3.hpp>
#include<glm/glm.hpp>
#include<soil/SOIL.h>
#define WIDTH 768.0
#define HEIGHT 1024.0
#define BLOCK_SIZE 32
using namespace std;
GLuint VAO, VBO,EBO;
GLfloat box[] =
{
							 BLOCK_SIZE /HEIGHT,   BLOCK_SIZE /WIDTH,   0.0,  0.0,  0.0,
							-BLOCK_SIZE / HEIGHT,  BLOCK_SIZE / WIDTH,  0.0,  1.0,  0.0,
							-BLOCK_SIZE / HEIGHT, -BLOCK_SIZE / WIDTH,  0.0,  1.0,  1.0,
							 BLOCK_SIZE / HEIGHT, -BLOCK_SIZE / WIDTH,  0.0,  0.0,  1.0
};
GLuint boxIndex[] =
{
								0, 1, 2,
								2, 3, 0
};
void CreateVertex()
{
	//申请VAO,VBO
	glGenVertexArrays(1, &VAO);
	glGenBuffers(1, &VBO);
	glGenBuffers(1, &EBO);
	//绑定VAO,VBO
	glBindVertexArray(VAO);

	glBindBuffer(GL_ARRAY_BUFFER, VBO);
	glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat) * 20, box, GL_STATIC_DRAW);

	glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO);
	glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(GLuint) * 6, boxIndex, GL_STATIC_DRAW);
	//设置顶点格式
	glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 5 * sizeof(GLfloat), 0);
	glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 5 * sizeof(GLfloat), (GLvoid*)(3 * sizeof(GLfloat)));
	glEnableVertexAttribArray(0);
	//解绑
	glBindVertexArray(0);
}
void RenderSence()
{
	//清空屏幕
	glClear(GL_COLOR_BUFFER_BIT);
	glBindVertexArray(VAO);
	glDrawElements(GL_TRIANGLE_STRIP, 6, GL_UNSIGNED_INT, 0);
	glBindVertexArray(0);
}
int main()
{
	//初始化glfw
	glfwInit();
	//设置glfw参数
	glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);//设置OpenGL版本
	glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
	glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);//OPENGL核心模式
	glfwWindowHint(GLFW_RESIZABLE, GL_FALSE);//窗口大小不可调整
	GLFWwindow * window = glfwCreateWindow(HEIGHT, WIDTH, "OpenGL", nullptr, nullptr);
	if (window == nullptr)
	{
		cout << "错误0001:创建窗口失败" << endl;
		return -1;
	}
	glfwMakeContextCurrent(window);//设置窗口上下文
	//输出GL版本和当前使用着色器
	cout << glGetString(GL_VERSION) << endl;
	cout << glGetString(GL_RENDERER) << endl;
	glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
	if (glewInit() != GLEW_OK)
	{
		cout << "错误1001:glew初始化错误;" << endl;
		return -1;
	}
	//定义视觉范围大小
	glViewport(0, 0, HEIGHT, WIDTH);
	CreateVertex();
	while (!glfwWindowShouldClose(window))
	{
		glfwPollEvents();
		RenderSence();
		glfwSwapBuffers(window);
	}
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值