说明:本系列视频使用 mac平台的Xcode来实现,windows平台和Linux平台与之类似。
1 程序功能简介
目的:显示1个蓝色的四边形。运行效果如下所示:
功能很简单,主要是通过实战 理解 索引缓冲对象EBO。
3 程序代码-四边形
#include
#include
#include
#include
#include
#include
#include
#include void framebuffer_size_callback(GLFWwindow* window, int width, int height);
void processInput(GLFWwindow *window);// settings
const unsigned int SCR_WIDTH = 800;
const unsigned int SCR_HEIGHT = 600;//===================vertex shader programme defination start===================
const char *vertexShaderSource =
"#version 330 core\n"
"layout (location = 0) in vec3 aPos;\n"
"void main()\n"
"{\n"
" gl_Position = vec4(aPos.x, aPos.y, aPos.z, 1.0);\n"
"}\0";//fragment shader defination
const char *fragmentShaderOrangeSource =
"#version 330 core\n"
"out vec4 FragColor;\n"
"void main()\n"
"{\n"
" FragColor = vec4(0.0f, 0.0f, 1.0f, 1.0f);\n"
"}\n\0";//===================vertex shader programme defination end===================int main()
{// @1.1 glfw: initialize and configure---------------------glfwInit();glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);#ifdef __APPLE__glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); // uncomment this statement to fix compilation on OS X
#endif// &#64;1.2 glfw window creation---------------------GLFWwindow* window &#61; glfwCreateWindow(SCR_WIDTH, SCR_HEIGHT, "DaoshengOpenGL", NULL, NULL);if (window &#61;&#61; NULL){std::cout <<"Failed to create GLFW window" <// glDrawArrays(GL_TRIANGLES, 0, 3);// glfw: swap buffers and poll IO events (keys pressed/released, mouse moved etc.)glfwSwapBuffers(window);glfwPollEvents();}// optional: de-allocate all resources once they&#39;ve outlived their purpose:glDeleteVertexArrays(1,VAO);glDeleteBuffers(1,VBO);glfwTerminate(); // glfw: terminate, clearing all previously allocated GLFW resources.return 0;
}// process all input: query GLFW whether relevant keys are pressed/released this frame and react accordingly
void processInput(GLFWwindow *window)
{if (glfwGetKey(window, GLFW_KEY_ESCAPE) &#61;&#61; GLFW_PRESS)glfwSetWindowShouldClose(window, true);
}// glfw: whenever the window size changed (by OS or user resize) this callback function executes
void framebuffer_size_callback(GLFWwindow* window, int width, int height)
{// make sure the viewport matches the new window dimensions; note that width and// height will be significantly larger than specified on retina displays.glViewport(0, 0, width, height);
}
该系列文章主要参考openGL官网 和学习 learnopenGL官网 进行知识体系的梳理和重构&#xff0c;重在形成自己对openGL知识的理解和知识体系。
- 参考相关链接总站&#xff1a;https://learnopengl-cn.readthedocs.io/zh/latest/
- 参考OpenGL官网&#xff1a;https://www.opengl.org/about/
- 同时也参考了网上其他内容知识 进而 进行整合。