对着色器程序,VAO,VBO等进行了封装,并使用纹理其实就是贴图 来填充图形
main.cpp
#include <glad/glad.h>
#include <GLFW/glfw3.h>
#include <iostream>
#include "stb_image.h"
#include "shader.h"
#include "VO.h"
void monitor(GLFWwindow* win, int W, int H) {
glViewport(0, 0, W, H);
return;
}
void Input(GLFWwindow* win) {
if (glfwGetKey(win, GLFW_KEY_ESCAPE) == GLFW_PRESS) {
glfwSetWindowShouldClose(win, true);
}
else if (glfwGetKey(win, GLFW_KEY_SPACE) == GLFW_PRESS) {
// 使用线框模式绘制
// 参数1 对所有图形使用
// 参数2 使用线条绘制
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
}
else {
// 使用线框模式绘制
// 参数1 对所有图形使用
// 参数2 使用填充绘制
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
}
return;
}
int main() {
glfwInit();
glfwInitHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwInitHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwInitHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
GLFWwindow* win = glfwCreateWindow(800, 600, "纹理", NULL, NULL);
glfwMakeContextCurrent(win);
gladLoadGLLoader((GLADloadproc)glfwGetProcAddress);
glViewport(0, 0, 800, 600);
glfwSetFramebufferSizeCallback(win, monitor);
float nums[] = {
// ---- 位置 ---- ---- 颜色 ---- - 纹理坐标 -
0.5f, 0.5f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, // top right
0.5f, -0.5f,