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

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

OpenGL學習筆記之Buffers

2019-11-11 00:02:55
字體:
來源:轉載
供稿:網友

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);
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宜章县| 淮安市| 隆德县| 班戈县| 天气| 山东| 天全县| 苏尼特左旗| 松阳县| 南召县| 广宁县| 民丰县| 塔城市| 西吉县| 招远市| 镇江市| 阿尔山市| 云梦县| 柳林县| 土默特左旗| 西盟| 肥城市| 文化| 板桥市| 思茅市| 鄱阳县| 游戏| 高邮市| 和龙市| 巫山县| 洛宁县| 治县。| 山东省| 调兵山市| 潞城市| 申扎县| 上高县| 宁乡县| 南岸区| 玛沁县| 东海县|