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

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

OpenGL學習筆記之Buffers

2019-11-11 01:33:34
字體:
來源:轉載
供稿:網友

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);
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 故城县| 青浦区| 伊金霍洛旗| 玉门市| 红安县| 金坛市| 屏山县| 永兴县| 柘城县| 全州县| 余姚市| 仙桃市| 广安市| 张家界市| 临夏市| 台南市| 曲松县| 尼勒克县| 竹北市| 石门县| 绥化市| 靖边县| 长海县| 思茅市| 庆安县| 温州市| 新化县| 鹤山市| 巴马| 集安市| 平阴县| 和平县| 青岛市| 巨野县| 正阳县| 社会| 南丹县| 曲水县| 海丰县| 柳江县| 潮州市|