学习笔记一
2015-06-11 11:22
344 查看
画一个三矩形
1,生成vertex buffer
2,绘制
3,着色器代码
顶点着色器
片段着色器
1,生成vertex buffer
//三角形顶点信息 static const GLfloat g_vertex_buffer_data[] = { -1.0f/2, -1.0f/2, 0.0f, 1.0f/2, -1.0f/2, 0.0f, 1.0f/2, 1.0f/2, 0.0f, -1.0f/2, 1.0f/2, 0.0f }; //vb的标识符由后面的函数得到 GLuint vertexbuffer; // 产生一个buffer并把标识符保存到vertexbuffer中 glGenBuffers(1, &vertexbuffer); //绑定vertexbuffer到数组缓冲 glBindBuffer(GL_ARRAY_BUFFER, vertexbuffer); //把定点数组复制到缓冲区内 glBufferData(GL_ARRAY_BUFFER, sizeof(g_vertex_buffer_data), g_vertex_buffer_data, GL_STATIC_DRAW); //着色器 GLuint programID = LoadShaders( "SimpleVertexShader.vertexshader", "SimpleFragmentShader.fragmentshader" );
2,绘制
// Clear the screen glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // 使用着色器 glUseProgram(programID); // 1rst attribute buffer : vertices glEnableVertexAttribArray(0); glBindBuffer(GL_ARRAY_BUFFER, vertexbuffer); glVertexAttribPointer( 0, // attribute 0. No particular reason for 0, but must match the layout in the shader. 3, // 三个顶点信息为一组 GL_FLOAT, // type GL_FALSE, // normalized? 0, // stride (void*)0 // array buffer offset ); //使用GL_TRANGLE_FAN以公用边的形式画多边形 glDrawArrays(GL_TRIANGLE_FAN , 0, 3*2); glDisableVertexAttribArray(0);
3,着色器代码
顶点着色器
#version 330 core // Input vertex data, different for all executions of this shader. layout(location = 0) in vec3 vertexPosition_modelspace; void main(){ gl_Position.xyz = vertexPosition_modelspace; gl_Position.w = 1.0; }
片段着色器
#version 330 core // Ouput data out vec3 color; void main() { // Output color = red color = vec3(1,0,0); }
相关文章推荐
- 解决Vista系统OpenGL驱动问题的方法整理
- Delphi下OpenGL2d绘图之画四边形的方法
- Delphi下OpenGL2d绘图之画点的方法
- Delphi下OpenGL2d绘图之初始化流程详解
- Delphi使用OpenGL2d绘图之画图片Bmp的方法
- 通过OpenGL ES混合模式缩放视频缓冲区来适应显示尺寸
- VC运用OPENGL加载BMP纹理图的实现方法汇总
- OpenGL坐标系介绍
- linux下opengl的安装(with qt)
- OpenGL超级宝典笔记——显示列表
- OpenGL超级宝典笔记——顶点数组
- OpenGL生成轮廓
- OpenGL超级宝典笔记——性能比较
- OpenGL超级宝典笔记——顶点缓冲区对象
- OpenGL超级宝典笔记——选择
- OpenGL超级宝典笔记——反馈
- OpenGL超级宝典笔记——遮挡查询
- OpenGL超级宝典笔记——深度纹理和阴影
- OpenGL超级宝典笔记——GLSL语言基础
- OpenGL超级宝典笔记——顶点着色器示例