国产探花免费观看_亚洲丰满少妇自慰呻吟_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);
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 广河县| 安泽县| 新源县| 嘉义县| 瑞安市| 汶上县| 中宁县| 广东省| 乌拉特中旗| 峨边| 开远市| 离岛区| 瑞金市| 泰安市| 郸城县| 桐梓县| 綦江县| 同德县| 淄博市| 苏尼特左旗| 韶山市| 宜兰县| 鹤山市| 通江县| 南和县| 咸阳市| 长宁县| 泰安市| 土默特右旗| 汕尾市| 额尔古纳市| 溧水县| 安达市| 天柱县| 镇宁| 元阳县| 双峰县| 威海市| 天气| 冷水江市| 九寨沟县|