国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

OpenGL學習筆記之Buffers

2019-11-10 23:53:23
字體:
來源:轉載
供稿:網友

Chapter 5 Data Buffers

用Buffers來填充頂點著色器的數據,下面是主要的代碼片段。好幾次編譯不過是因為:

1.我的OpengGL GLSL為4.4,還無法支持4.5新增的函數(如glNamedBufferStorage()), 需要glBindBuffer()配合glBufferStorage()為buffer初始化。 2.glBindVertexBuffer() 參數stride是緩沖區內各個頂點屬性數據的間隔長度,因此長度是 8*sizeof(GL_FLOAT) 而不是 4*sizeof(GL_FLOAT)


struct vertex{ GLfloat position[4]; GLfloat color[4];};GLuint vao;GLuint vbo;GLuint buffer;static const vertex vertices[] ={ {{ 0.5f, 0.5f, 0.0f, 1.0f}, { 1.0f, 1.0f, 0.0f, 1.0f }}, {{ 0.5f, -0.5f, 0.0f, 1.0f }, { 0.0f, 1.0f, 1.0f, 1.0f }}, {{ -0.5f, -0.5f, 0.0f, 1.0f }, { 1.0f, 1.0f, 1.0f, 1.0f }}};glGenVertexArrays(1, &vao);glBindVertexArray(vao);glGenBuffers(1, &buffer);//我的版本是4.4, 無法使用glNamedBufferStorage, 所以需要glBindBufferglBindBuffer(GL_ARRAY_BUFFER, buffer); glBufferStorage(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_MAP_READ_BIT);// 描述數據的layout與formatglVertexAttribFormat(0, 4, GL_FLOAT, GL_FALSE, offsetof(vertex, position[0]));//bind a buffer to a vertex buffer bind pointglBindVertexBuffer(0, buffer, 0, 8 * sizeof(GL_FLOAT));// 關聯 vertex attribute 與 vao的 vertex buffer 的綁定glVertexAttribBinding(0, 0);glVertexAttribFormat(1, 4, GL_FLOAT, GL_FALSE, offsetof(vertex, color[0]));glBindVertexBuffer(0, buffer, 0, 8 * sizeof(GL_FLOAT));glVertexAttribBinding(1, 0);// 允許通用頂點屬性數組glEnableVertexAttribArray(0);glEnableVertexAttribArray(1);glBindVertexArray(0);
上一篇:equals和==的區別

下一篇:memset

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 德令哈市| 新河县| 景德镇市| 长寿区| 靖远县| 科技| 老河口市| 十堰市| 裕民县| 南靖县| 东辽县| 永顺县| 独山县| 弥渡县| 建水县| 合山市| 邓州市| 光泽县| 乌审旗| 博湖县| 咸宁市| 大石桥市| 威宁| 鹤峰县| 浦北县| 安西县| 鲜城| 沅江市| 崇阳县| 岳阳市| 龙山县| 荆州市| 怀宁县| 台南市| 桐庐县| 济宁市| 塔城市| 邯郸县| 东丰县| 陈巴尔虎旗| 眉山市|