基于索引绘制glDrawElement
来源:互联网 发布:沪牌代拍软件 编辑:程序博客网 时间:2024/06/16 17:06
GPU:
vertex shader
uniform mediump mat4 uViewProjMatrix;varying lowp vec4 vColor;void main(void){ gl_Position = uViewProjMatrix * vec4(aPosition.x, aPosition.y, 0.0, 1.0); vColor = vec4(aPosition.x * 0.5 + 0.5, aPosition.y * 0.5 + 0.5, 0.0, 1.0);}
frag shader
#version 100precision highp float;varying lowp vec4 vColor;void main(void){ gl_FragColor = vColor;}
cpu:
init()
initRendering(void) { NV_APP_BASE_SHARED_INIT(); NvAssetLoaderAddSearchPath("tutorial/Basic"); mProgram = NvGLSLProgram::createFromFiles("shaders/plain.vert", "shaders/plain.frag"); static const float position[] = { -1.0f, -1.0f, 1.0f, -1.0f, -1.0f, 1.0f, 1.0f, 1.0f, }; //-----------基于索引绘制 static const GLushort plane_indices[] = { 0, 1, 2, 3 }; glGenBuffers(1, &_index_buffer); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, _index_buffer); glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(plane_indices), plane_indices, GL_STATIC_DRAW); //-------------- glGenBuffers(1, &_quad_vbo); glBindBuffer(GL_ARRAY_BUFFER, _quad_vbo); glBufferData(GL_ARRAY_BUFFER, sizeof(position), NULL, GL_STATIC_DRAW); glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(position), position); glGenVertexArrays(1, &_vao); glBindVertexArray(_vao); GLint naPosition = mProgram->getAttribLocation("aPosition"); glVertexAttribPointer(naPosition, 2, GL_FLOAT, GL_FALSE, 0, 0); glEnableVertexAttribArray(0); glBindVertexArray(0); glDisableVertexAttribArray(0);}
draw()
draw(void){ CHECK_GL_ERROR(); glClearColor(0.0f, 0.25f, 0.3f, 1.0f); glClearDepth(1.0f); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); CHECK_GL_ERROR(); nv::matrix4f projection_matrix; nv::perspective(projection_matrix, 3.14f * 0.25f, m_width/(float)m_height, 0.1f, 30.0f); nv::matrix4f camera_matrix = projection_matrix * m_transformer->getModelViewMat(); CHECK_GL_ERROR(); mProgram->enable(); mProgram->setUniformMatrix4fv("uViewProjMatrix", camera_matrix._array, 1, GL_FALSE); CHECK_GL_ERROR(); //----------------------------------------- glBindVertexArray(_vao); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, _index_buffer); glDrawElements(GL_TRIANGLE_STRIP, 4, GL_UNSIGNED_SHORT,NULL); glBindVertexArray(0); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); //------------------------------------------ CHECK_GL_ERROR(); mProgram->disable();}
阅读全文
0 0
- 基于索引绘制glDrawElement
- 数组绘制中的索引
- 顶点/索引缓存绘制
- 索引缓存绘制方形
- OpenGL 顶点索引 绘制
- DrawIndexedPrimitive()索引缓冲区绘制
- 164_动态控制绘制索引
- 基于函数的索引
- 文章索引~基于QT
- 基于函数的索引
- 基于opengl的RoundBox绘制
- 基于MFC的时钟绘制
- 基于Highcharts绘制差值连接线
- Android 基于surfaceView绘制正弦曲线
- 基于Highcharts的图表绘制
- 基于Canvas绘制的图表
- 基于echars的图像绘制
- OpenGL7-3快速绘制(索引方式)
- 欢迎使用CSDN-markdown编辑器
- LeetCode小白菜笔记[1]:Two Sum
- 重载宏函数
- Qt小技巧
- 从并发容器ConcurrentLinkedQueue看解决并发问题的设计思路
- 基于索引绘制glDrawElement
- Docker新版镜像加速
- highcharts 常用属性
- MySQL创建用户与授权
- 283. Move Zeroes。
- 2017.12.3CCF真题第四题
- arcgis for js在地图不同分辨率下分别绘制物体
- Wannafly挑战赛5 子序列
- Android中inflate简介