{
    "componentChunkName": "component---src-templates-blog-post-jsx",
    "path": "/posts/2017/10/01/vbo-and-vao-md/",
    "result": {"data":{"site":{"siteMetadata":{"siteUrl":"https://codeand.fun"}},"mdx":{"body":"var _excluded = [\"components\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"title\": \"VBO_and_VAO.md\",\n  \"date\": \"2017-10-01T16:37:52.000Z\",\n  \"tags\": [\"OpenGL\", \"note\", \"计算机图形学\"],\n  \"categories\": [\"Blog\"]\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"p\", null, \"\\u6700\\u8FD1\\u5728\\u5199\\u8BA1\\u7B97\\u673A\\u56FE\\u5F62\\u5B66\\u7684\\u671F\\u4E2D\\u4F5C\\u4E1A\\uFF0C\\u5199\\u4E00\\u4E2A\\u7B80\\u6613\\u7684\\u4FC4\\u7F57\\u65AF\\u65B9\\u5757\\u3002\\u5728\\u5199\\u7684\\u8FC7\\u7A0B\\u4E2D\\u611F\\u89C9\\u597D\\u50CF\\u4E4B\\u524D\\u6691\\u5047\\u770B\\u7684\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"OpenGL\"), \"\\u7684\\u4E1C\\u897F\\u90FD\\u5FD8\\u5149\\u5149\\u4E86\\uFF0C\\u6240\\u4EE5\\u8FD8\\u662F\\u53CA\\u65F6\\u7684\\u5199\\u5199\\u7B14\\u8BB0\\u5427\\uFF01\"), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, \"\\u9876\\u70B9\\u6570\\u7EC4\\u5BF9\\u8C61\\uFF1A Vertex Array Object,vao\"), mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, \"\\u9876\\u70B9\\u7F13\\u51B2\\u5BF9\\u8C61\\uFF1AVertex Buffer Object,vbo\")), mdx(\"p\", null, \"\\u5728\\u6572\\u4EE3\\u7801\\u7684\\u65F6\\u5019\\u5C31\\u89C9\\u5F97\\u8001\\u662F\\u4F1A\\u641E\\u6DF7\\u8FD9\\u4E24\\u4E2A\\u6982\\u5FF5\\uFF0C\\u6240\\u4EE5\\u4ECA\\u5929\\u5C31\\u603B\\u7ED3\\u4E00\\u4E0B\\u3002\"), mdx(\"p\", null, \"\\u5148\\u6765\\u6BB5\\u4EE3\\u7801\\uFF1A\"), mdx(\"div\", {\n    \"className\": \"gatsby-highlight\",\n    \"data-language\": \"cpp\"\n  }, mdx(\"pre\", {\n    parentName: \"div\",\n    \"className\": \"language-cpp\"\n  }, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-cpp\"\n  }, mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"void\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"init\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"{\"), \"\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"const\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"int\"), \" VERTICES_NUM \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"=\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token number\"\n  }, \"3\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n    vec3 vertices\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"[\"), \"VERTICES_NUM\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"]\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"=\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"{\"), \"\\n        \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"{\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token number\"\n  }, \"1.0\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token number\"\n  }, \"1.0\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token number\"\n  }, \"1.0\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"}\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), \"\\n        \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"{\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token number\"\n  }, \"0.0\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token number\"\n  }, \"1.0\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token number\"\n  }, \"0.0\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"}\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), \"\\n        \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"{\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token number\"\n  }, \"0.0\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token number\"\n  }, \"0.0\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token number\"\n  }, \"1.0\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"}\"), \"\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"}\"), \"\\n\\n    GLuint vao\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"[\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token number\"\n  }, \"1\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"]\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"glGenVertexArrays\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token number\"\n  }, \"1\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), \"vao\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"glBindVertexArray\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), \"vao\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"[\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token number\"\n  }, \"0\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"]\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n\\n    GLuint buffer\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"glGenBuffers\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token number\"\n  }, \"1\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"&\"), \"buffer\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"glBindBuffer\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), \"GL_ARRAY_BUFFER\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), \" buffer\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"glBufferData\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), \"GL_ARRAY_BUFFER\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"sizeof\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), \"vertices\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), \"vertices\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), \"CL_STATIC_DRAW\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n\\n    GLuint program \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"=\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"InitShader\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token string\"\n  }, \"\\\"vshader.glsl\\\"\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token string\"\n  }, \"\\\"fshader.glsl\\\"\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"glUseProgram\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), \"program\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n\\n    GLuint location \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"=\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"glGetAttribLocation\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), \"program\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token string\"\n  }, \"\\\"vPosition\\\"\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"glEnableVertexAttribArray\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), \"location\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"glVertexAttribPointer\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), \"location\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token number\"\n  }, \"3\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), \"GL_FLOAT\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), \"GL_FALSE\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token number\"\n  }, \"0\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"BUFFER_OFFSET\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token number\"\n  }, \"0\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"glClearColor\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token number\"\n  }, \"1.0\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token number\"\n  }, \"1.0\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token number\"\n  }, \"1.0\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token number\"\n  }, \"1.0\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"}\")))), mdx(\"p\", null, \"OpenGL\\u91CC\\u7684\\u5BF9\\u8C61\\u90FD\\u662F\\u901A\\u8FC7\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"id\"), \"\\u6765\\u7BA1\\u7406\\u7684,\\u6709\\u7684\\u5730\\u65B9\\u53EB\\u505A\\u540D\\u5B57\\uFF0C\\u6216\\u8005\\u8BF4\\u6807\\u8BC6\\u7B26\\uFF0Cwhatever,\\u6211\\u4EEC\\u5728\\u8FD9\\u91CC\\u7EDF\\u4E00\\u7528id\\u3002\\u6211\\u4EEC\\u9700\\u8981\\u7528\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"glGen*\"), \"\\u6A21\\u5F0F\\u7684\\u51FD\\u6570\\u6765\\u83B7\\u53D6\\u672A\\u4F7F\\u7528\\u7684id\\uFF0C\\u8FD9\\u91CC\\u7684id\\u53EF\\u4EE5\\u60F3\\u6210\\u662F\\u6307\\u9488\\u3002\"), mdx(\"div\", {\n    \"className\": \"gatsby-highlight\",\n    \"data-language\": \"cpp\"\n  }, mdx(\"pre\", {\n    parentName: \"div\",\n    \"className\": \"language-cpp\"\n  }, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-cpp\"\n  }, \"GLuint vao\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"[\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token number\"\n  }, \"1\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"]\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"                  \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token comment\"\n  }, \"//\\u7528\\u6765\\u5B58\\u653Eid\\u7684\\u6570\\u7EC4\"), \"\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"glGenVertexArrays\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token number\"\n  }, \"1\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), \"vao\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"       \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token comment\"\n  }, \"//\\u83B7\\u53D6id\\uFF0C\\u7B2C\\u4E00\\u4E2A\\u53C2\\u6570\\u662F\\u60F3\\u8981\\u83B7\\u53D6\\u7684\\u4E2A\\u6570\"), \"\\n                                \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token comment\"\n  }, \"//\\u7B2C\\u4E8C\\u4E2A\\u53C2\\u6570\\u662F\\u5B58\\u653E\\u8FD9\\u4E9Bid\\u7684\\u6570\\u7EC4\")))), mdx(\"p\", null, \"\\u73B0\\u5728\\u6211\\u4EEC\\u6709\\u4E86\\u9876\\u70B9\\u6570\\u7EC4\\u5BF9\\u8C61\\u7684\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"id\"), \"\\u4E86\\uFF08\\u6362\\u53E5\\u8BDD\\u8BF4\\uFF0C\\u6211\\u4EEC\\u6709\\u4E86\\u4E00\\u4E2A\\u53EF\\u4EE5\\u5B58\\u653E\\u5730\\u5740\\u7684\\u6307\\u9488\\uFF09\\uFF0C\\u6211\\u4EEC\\u5C31\\u9700\\u8981\\u771F\\u6B63\\u7684\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"new\"), \"\\u4E00\\u4E2A\\u5BF9\\u8C61\\u51FA\\u6765\\u3002\"), mdx(\"div\", {\n    \"className\": \"gatsby-highlight\",\n    \"data-language\": \"cpp\"\n  }, mdx(\"pre\", {\n    parentName: \"div\",\n    \"className\": \"language-cpp\"\n  }, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-cpp\"\n  }, mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"glBindVertexArray\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), \"vao\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\")))), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\u5982\\u679Cvao\\u975E0\\uFF0C\\u5E76\\u4E14\\u662F\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"glGenVertexArrays()\"), \"\\u8FD4\\u56DE\\u7684\\uFF0C\\u90A3\\u4E48\\u5B83\\u521B\\u5EFA\\u4E00\\u4E2A\\u65B0\\u7684\\u9876\\u70B9\\u6570\\u7EC4\\uFF0C\\u5E76\\u4E14==\\u5E76\\u4E14\\u4E0E\\u5176\\u540D\\u79F0\\u5411\\u5173\\u8054==\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\u5982\\u679Cvao\\u5DF2\\u7ECF\\u88AB\\u7ED1\\u5B9A\\u5230\\u4E00\\u4E2A\\u9876\\u70B9\\u6570\\u7EC4\\u5BF9\\u8C61\\u4E2D\\uFF0C\\u90A3\\u4E48\\u8FD9\\u4E2A\\u51FD\\u6570\\u7684\\u4F5C\\u7528\\u5C31\\u662F\\u6FC0\\u6D3B\\u8FD9\\u4E2A\\u9876\\u70B9\\u6570\\u7EC4\\u3002\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\u5982\\u679C\\u4E3A0\\uFF0C\\u90A3\\u4E48OpenGL\\u5C06\\u4E0D\\u518D\\u4F7F\\u7528\\u7A0B\\u5E8F\\u6240\\u5206\\u914D\\u7684\\u9876\\u70B9\\u6570\\u7EC4\\u5BF9\\u8C61\\uFF0C\\u5E76\\u4E14OpenGL\\u72B6\\u6001\\u5C06\\u91CD\\u8BBE\\u4E3A\\u9876\\u70B9\\u6570\\u7EC4\\u7684\\u9ED8\\u8BA4\\u72B6\\u6001\\u3002\")), mdx(\"p\", null, \"\\u7B2C\\u4E00\\u4E2A\\u5F88\\u597D\\u7406\\u89E3\\u5C31\\u662F\\u7B49\\u4EF7\\u4E8E\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"new\"), \",\\u7B2C\\u4E8C\\u4E2A\\u4F5C\\u7528\\u53EF\\u4EE5\\u7406\\u89E3\\u4E3A\\u6839\\u636E\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"id\"), \"\\u83B7\\u53D6\\u5BF9\\u8C61\\uFF08\\u5BF9\\u6307\\u9488\\u89E3\\u5F15\\u7528\\uFF09\\uFF0C\\u7B2C\\u4E09\\u4E2A\\u4F5C\\u7528\\u662F\\u5728\\u6BCF\\u6B21\\u5BF9\\u67D0\\u4E2A\\u9876\\u70B9\\u6570\\u7EC4\\u5BF9\\u8C61\\u64CD\\u4F5C\\u5B8C\\u540E\\u5BF9\\u5F53\\u524D\\u9876\\u70B9\\u6570\\u7EC4\\u5BF9\\u8C61\\u8FDB\\u884C\\u89E3\\u7ED1\\u3002\"), mdx(\"p\", null, \"\\u6709\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"new\"), \"\\u5C31\\u4F1A\\u6709\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"delete\")), mdx(\"div\", {\n    \"className\": \"gatsby-highlight\",\n    \"data-language\": \"cpp\"\n  }, mdx(\"pre\", {\n    parentName: \"div\",\n    \"className\": \"language-cpp\"\n  }, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-cpp\"\n  }, mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token comment\"\n  }, \"//void glDeleteVertexArray(GLsizei n,GLuint *arrays);\"), \"\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"glDeleteVertexArray\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token number\"\n  }, \"1\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), \"vao\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\")))), mdx(\"p\", null, \"\\u6211\\u4EEC\\u8FD8\\u53EF\\u4EE5\\u5224\\u65AD\\u4E00\\u4E2A\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"id\"), \"\\u662F\\u5426\\u662F\\u4E00\\u4E2A\\u7528\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"glGenVertexArray()\"), \"\\u521B\\u5EFA\\u5E76\\u4E14\\u6CA1\\u6709\\u88AB\\u5220\\u9664\\u7684\\u9876\\u70B9\\u6570\\u7EC4\\u5BF9\\u8C61\\u7684\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"id\"), \":\"), mdx(\"div\", {\n    \"className\": \"gatsby-highlight\",\n    \"data-language\": \"cpp\"\n  }, mdx(\"pre\", {\n    parentName: \"div\",\n    \"className\": \"language-cpp\"\n  }, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-cpp\"\n  }, \"GLboolean \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"glIsVertexArray\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), \"GLuint array\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\")))), mdx(\"p\", null, \"\\u73B0\\u5728\\u6211\\u4EEC\\u5DF2\\u7ECF\\u6709\\u4E00\\u4E2Avao\\u4E86\\uFF0C\\u4F46\\u662F\\u6211\\u4EEC\\u597D\\u50CF\\u8FD8\\u4E0D\\u77E5\\u9053vao\\u6709\\u4EC0\\u4E48\\u7528\\uFF0C\\u8981\\u56DE\\u7B54\\u8FD9\\u4E2A\\u95EE\\u9898\\uFF0C\\u6211\\u4EEC\\u8FD8\\u9700\\u8981\\u4E00\\u4E9B\\u5176\\u4ED6\\u7684\\u80CC\\u666F\\u77E5\\u8BC6\\uFF0C\\u6240\\u4EE5\\u8FD9\\u4E2A\\u95EE\\u9898\\u653E\\u5230\\u540E\\u9762\\u518D\\u56DE\\u7B54\\u3002\"), mdx(\"p\", null, \"\\u6211\\u4EEC\\u4E4B\\u6240\\u4EE5\\u9700\\u8981VAO\\u4E0EVBO\\u662F\\u56E0\\u4E3A\\u6211\\u4EEC\\u60F3\\u8981\\u628A\\u67D0\\u4E9B\\u9876\\u70B9\\u6570\\u7EC4\\u53D1\\u9001\\u7ED9\\u56FE\\u50CF\\u6E32\\u67D3pipeline\\uFF0C\\u800Cpipleline\\u9700\\u8981\\u63A5\\u53D7\\u4E00\\u4E9BVertex Data,\\u7136\\u540E\\u518D\\u8FDB\\u884C\\u4E00\\u4E9B\\u53D8\\u6362\\u6216\\u4FEE\\u6539\\u5E76\\u6E32\\u67D3\\u3002\"), mdx(\"p\", null, mdx(\"img\", {\n    parentName: \"p\",\n    \"src\": \"https://learnopengl-cn.github.io/img/01/04/pipeline.png\",\n    \"alt\": null\n  })), mdx(\"p\", null, \"\\u6211\\u4EEC\\u5728\\u5B9A\\u4E49\\u4E86\\u9876\\u70B9\\u6570\\u636E\\u4E4B\\u540E\\uFF0C\\u6211\\u4EEC\\u9700\\u8981\\u628A\\u4ED6\\u53D1\\u9001\\u7ED9\\u9876\\u70B9\\u7740\\u8272\\u5668\\uFF0C\\u6211\\u4EEC\\u7684\\u9876\\u70B9\\u6570\\u636E\\u901A\\u5E38\\u662F\\u653E\\u5728GPU\\u7684\\u5185\\u5B58\\u4E2D\\u7684\\uFF0C\\u6211\\u4EEC\\u5229\\u7528\\u9876\\u70B9\\u7F13\\u51B2\\u5BF9\\u8C61(vertext buffer objects,vbo)\\u8FDB\\u884C\\u7BA1\\u7406\"), mdx(\"p\", null, \"vbo\\u4E5F\\u6709\\u76F8\\u5E94\\u7684\\u51FD\\u6570\\u8FDB\\u884C\\u7533\\u8BF7\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"id\"), \"\\uFF0C\\u7ED1\\u5B9A\\u7B49\\u7B49\\uFF0C\\u4E0Evao\\u7C7B\\u4F3C\\uFF1A\"), mdx(\"div\", {\n    \"className\": \"gatsby-highlight\",\n    \"data-language\": \"cpp\"\n  }, mdx(\"pre\", {\n    parentName: \"div\",\n    \"className\": \"language-cpp\"\n  }, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-cpp\"\n  }, mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"void\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"glGenBuffers\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), \"GLsizei n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), \"GLuint \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"*\"), \"buffers\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"void\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"glBindBuffers\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), \"GLenum traget\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), \"GLuint buffer\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token comment\"\n  }, \"//target \\u7684\\u503C\\u53EF\\u4EE5\\u4E3A\\uFF1A\"), \"\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token comment\"\n  }, \"//      GL_ARRAY_BUFFER\"), \"\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token comment\"\n  }, \"//      GL_ELEMENT_ARRAY_BUFFER\"), \"\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token comment\"\n  }, \"//      ...\"), \"\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"void\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"glDeleteBuffers\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), \"GLsizei n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"const\"), \" GLuint \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"*\"), \"buffers\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\nGLboolean \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"glIsBuffers\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), \"GLuint buffer\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\")))), mdx(\"p\", null, \"\\u5728\\u7533\\u8BF7\\u5B8C\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"id\"), \"\\u5E76\\u7ED1\\u5B9A\\u540E\\uFF0C\\u6211\\u4EEC\\u53EF\\u4EE5\\u60F3GPU\\u7684\\u5185\\u5B58\\u53D1\\u9001\\u6570\\u7EC4:\"), mdx(\"div\", {\n    \"className\": \"gatsby-highlight\",\n    \"data-language\": \"cpp\"\n  }, mdx(\"pre\", {\n    parentName: \"div\",\n    \"className\": \"language-cpp\"\n  }, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-cpp\"\n  }, mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"void\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"glBufferData\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), \"GLenum target\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), \"GLsizeiptr size\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), \"cons GLvoid \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"*\"), \"data\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), \"GLenum usage\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token comment\"\n  }, \"//target \\u4E0E\\u4E0A\\u9762glBindBuffers\\u7684\\u7C7B\\u4F3C\\uFF0C\"), \"\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token comment\"\n  }, \"//usage \\u662F\\u8BBE\\u7F6E\\u8BFB\\u53D6\\u548C\\u5199\\u5165\\u7684\\u65B9\\u5F0F\"), \"\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token comment\"\n  }, \"//      GL_STREAM_DRAM\"), \"\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token comment\"\n  }, \"//      GL_DYNAMICDRAM\"), \"\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token comment\"\n  }, \"//      ...\")))), mdx(\"p\", null, \"\\u5728\\u6211\\u4EEC\\u5411GPU\\u5185\\u5B58\\u4E2D\\u53D1\\u9001\\u5B8C\\u6570\\u636E\\u540E\\uFF0C\\u6211\\u4EEC\\u53EF\\u80FD\\u9700\\u8981\\u544A\\u8BC9OpenGL\\u5982\\u4F55\\u89E3\\u91CA\\u6211\\u4EEC\\u7684\\u6570\\u636E:\"), mdx(\"div\", {\n    \"className\": \"gatsby-highlight\",\n    \"data-language\": \"cpp\"\n  }, mdx(\"pre\", {\n    parentName: \"div\",\n    \"className\": \"language-cpp\"\n  }, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-cpp\"\n  }, \"GLuint location \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"=\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"glGetAttribLocation\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), \"program\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token string\"\n  }, \"\\\"vPosition\\\"\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"glEnableVertexAttribArray\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), \"location\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"glVertexAttribPointer\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), \"location\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token number\"\n  }, \"3\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), \"GL_FLOAT\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), \"GL_FALSE\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token number\"\n  }, \"0\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"BUFFER_OFFSET\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token number\"\n  }, \"0\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\")))), mdx(\"p\", null, \"\\u6211\\u4EEC\\u5148\\u8981\\u5411\\u7740\\u8272\\u5668\\u7A0B\\u5E8F\\u83B7\\u53D6\\u9876\\u70B9\\u5C5E\\u6027\\u7684\\u4F4D\\u7F6E\\u503C\\uFF0C\\u5373\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"GLuint location = glGetAttribLocation(program,\\\"vPosition\\\");\"), \"\\u6211\\u4EEC\\u5E94\\u8BE5\\u53EF\\u4EE5\\u5728\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"vshader.glsl\"), \"\\u4E2D\\u770B\\u5230\\u8FD9\\u6837\\u4E00\\u53E5\\u8BDD\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"in vec3 vPosition\"), \",\\u4ED6\\u8868\\u793A\\u7684\\u662F\\u6211\\u4EEC\\u4F1A\\u7ED9\\u4ED6\\u4E00\\u4E2A\\u7C7B\\u578B\\u4E3Avec3\\u7684\\u8F93\\u5165\\u503C\\uFF0C\\u800C\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"glGetAttribLocation\"), \"\\u53EF\\u4EE5\\u83B7\\u53D6\\u8FD9\\u4E2A\\u8F93\\u5165\\u503C\\u7684\\u4F4D\\u7F6E\\uFF0C\\u8FD9\\u6837\\u6211\\u4EEC\\u624D\\u53EF\\u4EE5\\u628A\\u6211\\u4EEC\\u7684\\u6570\\u636E\\u548C\\u8FD9\\u91CC\\u7684\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"vPosition\"), \"\\u7ED1\\u5B9A\\u8D77\\u6765\\u3002\"), mdx(\"p\", null, mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"glEnableVertexAttribArray(location)\"), \"\\u542F\\u7528\\u9876\\u70B9\\u5C5E\\u6027\\uFF08\\u9ED8\\u8BA4\\u662F\\u7981\\u7528\\u7684)\"), mdx(\"p\", null, \"\\u800C\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"glVertexAttribPointer(location,3,GL_FLOAT,GL_FALSE,0,BUFFER_OFFSET(0));\"), \"\\u624D\\u662F\\u771F\\u6B63\\u544A\\u8BC9OpenGL\\u5982\\u4F55\\u89E3\\u91CA\\u7684\\u51FD\\u6570\\u3002\"), mdx(\"p\", null, \"\\u4ED6\\u7684\\u53C2\\u6570\\u89E3\\u91CA\\u5206\\u522B\\u4E3A\\uFF1A\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\u9876\\u70B9\\u5C5E\\u6027\\u7684\\u4F4D\\u7F6E\\u503C\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\u9876\\u70B9\\u5C5E\\u6027\\u5927\\u5C0F\\uFF0C\\u56E0\\u4E3A\\u6211\\u4EEC\\u4F20\\u5165\\u7684\\u662F\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"vec3\"), \",\\u6240\\u4EE5\\u662F3\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\u6570\\u7EC4\\u7C7B\\u578B\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\u662F\\u5426\\u5F52\\u4E00\\u5316\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\u4E24\\u4E2A\\u5143\\u7D20\\u4E4B\\u95F4\\u7684\\u504F\\u79FB\\u503C\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\u8D77\\u59CB\\u4F4D\\u7F6E\\u5730\\u5740\")), mdx(\"p\", null, \"\\u6709\\u4E86\\u8FD9\\u4E9B\\u4E1C\\u897F\\uFF0C\\u6211\\u4EEC\\u5C31\\u53EF\\u4EE5\\u7ED8\\u5236\\u67D0\\u4E2A\\u7269\\u4F53\\u4E86\\uFF0C\\u4F46\\u662F\\u5982\\u679C\\u6211\\u4EEC\\u9700\\u8981\\u7ED8\\u5236\\u591A\\u4E2A\\u7269\\u4F53\\u5462\\uFF0C\\u8FD9\\u65F6VAO\\u7684\\u4F5C\\u7528\\u5C31\\u51FA\\u6765\\u4E86\\u3002\"), mdx(\"p\", null, \"\\u5982\\u679C\\u6211\\u4EEC\\u53EA\\u4F7F\\u7528VBO\\uFF0C\\u6211\\u4EEC\\u53EF\\u80FD\\u9700\\u8981\\u91CD\\u590D\\u7684\\u8C03\\u7528\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"glVertexAttribPointer\"), \"\\u7B49\\u3002\"), mdx(\"p\", null, \"\\u6211\\u4EEC\\u53EF\\u4EE5\\u901A\\u8FC7VAO\\u6765\\u7BA1\\u7406\\u8FD9\\u4E9B\\u7410\\u788E\\u7684\\u8BBE\\u7F6E\\uFF0C\\u4E00\\u4E2AVAO\\u4F1A\\u5B58\\u50A8\\u4EE5\\u4E0B\\u5185\\u5BB9\\uFF1A\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"glEnableVertexAttribArray\"), \"\\u548C\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"glDisableVertexAttribArray\"), \"\\u7684\\u8C03\\u7528\\u3002\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\u901A\\u8FC7\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"glVertexAttribPointer\"), \"\\u8BBE\\u7F6E\\u7684\\u9876\\u70B9\\u5C5E\\u6027\\u914D\\u7F6E\\u3002\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\u901A\\u8FC7\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"glVertexAttribPointer\"), \"\\u8C03\\u7528\\u4E0E\\u9876\\u70B9\\u5C5E\\u6027\\u5173\\u8054\\u7684\\u9876\\u70B9\\u7F13\\u51B2\\u5BF9\\u8C61\\u3002\")), mdx(\"p\", null, \"\\u6709\\u4E86vao\\u540E\\uFF0C\\u6211\\u4EEC\\u53EA\\u9700\\u8981\\u5728\\u6BCF\\u6B21\\u7ED8\\u5236\\u524D\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"glBindVertexArray(vao)\"), \"\\u5373\\u53EF\\u3002\"));\n}\n;\nMDXContent.isMDXComponent = true;","excerpt":"最近在写计算机图形学的期中作业，写一个简易的俄罗斯方块。在写的过程中感觉好像之前暑假看的 OpenGL 的东西都忘光光了，所以还是及时的写写笔记吧！ 顶点数组对象： Vertex Array…","frontmatter":{"title":"VBO_and_VAO.md","tags":["OpenGL","note","计算机图形学"],"date":"2017-10-01T16:37:52.000Z","categories":["Blog"]},"fields":{"slug":"/posts/2017/10/01/vbo-and-vao-md/"}}},"pageContext":{"slug":"/posts/2017/10/01/vbo-and-vao-md/"}},
    "staticQueryHashes": ["163584858","1656825683","63159454"]}