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

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

OpenGL學習筆記之Buffers

2019-11-10 22:45:27
字體:
來源:轉載
供稿:網友

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);
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 黄陵县| 新疆| 醴陵市| 琼海市| 称多县| 米泉市| 吉木萨尔县| 葵青区| 芦溪县| 迁安市| 明溪县| 清徐县| 渭源县| 宝应县| 淮安市| 自治县| 东阿县| 安龙县| 黄龙县| 武陟县| 洮南市| 临西县| 德昌县| 泉州市| 平南县| 永城市| 平定县| 潮安县| 海晏县| 邳州市| 南郑县| 卓尼县| 隆回县| 从江县| 永福县| 龙井市| 宁乡县| 体育| 缙云县| 凤庆县| 新巴尔虎右旗|