本节绘制一个三角形,并讲解Buffer Object-缓冲对象

OpenGL的窗口坐标

屏幕中心为坐标原点,横向朝右为x正方向,纵向朝上为y正方向,最大值最小值分别为1,-1.

Buffer Object

缓冲对象为内存中的一块空间,用来和OpenGL交互数据。

使用BufferObject的步骤:

  1. 创建Buffer的“名称”(或者理解为ID,地址), GLuint类型;
  2. 生成Buffer;
  3. 绑定Buffer到OpenGL的绑定点(Binding Point);
  4. 设置Buffer数据;

具体代码实现如下,修改MyGlWindow.cpp:

 #include <gl\glew.h>
#include "MyGlWindow.h" void MyGlWindow::initializeGL()
{
glewInit();
GLfloat verts[]=
{
+0.0f, +1.0f,
-1.0f, -1.0f,
+1.0f, -1.0f,
};
GLuint myBufferID;
glGenBuffers(, &myBufferID);
glBindBuffer(GL_ARRAY_BUFFER, myBufferID);
glBufferData(GL_ARRAY_BUFFER, sizeof(verts), verts, GL_STATIC_DRAW);
} void MyGlWindow::paintGL()
{
glClearColor(,,,);
}

13 行创建了一个GLuint对象(在OpenGL中可以用作对象的“名称",或者理解为ID或者类似指针的东西)。

14 行使用glGenBuffers函数创建了一个Buffer Object,第一个参数表示创建一个Buffer Object,第二个参数要使用一个GLuint类型对象的地址,用来把刚创建的Buffer Object的“地址/名称/ID”填充进去。

15 行把刚才创建的Buffer 对象绑定到OpenGL的一个GL_ARRAY_BUFFER绑定点。绑定点包括 GL_ARRAY_BUFFER, GL_ELEMENT_ARRAY_BUFFER等。绑定以后,绑定点的操作和绑定的Buffer对象就是等价的了。

16 行给Buffer 对象填充进数据。第一个参数说明是给GL_ARRAY_BUFFER绑定点填充数据,因为上一步已经绑定了,这里其实就是在给Buffer 对象填充数据。第二个参数表示数据的长度,第三个是要填充的数据,第四个参数表示数据是否要经常变化,因为这里只绘制一次,就不在变化,所以使用GL_STATIC_DRAW。

最新文章

  1. 对Maven、gradle、svn、spring 3.0 fragment、git的想法
  2. Entity Framework 简单查询
  3. 【BZOJ】3561: DZY Loves Math VI
  4. flexslider.js和waypoints.js一起用时的巨坑
  5. .net异步编程
  6. RedHat中敲sh-copy-id命令报错:-bash: ssh-copy-id: command not found
  7. “我爱淘”冲刺阶段Scrum站立会议3
  8. Entity Framework学习笔记(六)----使用Lambda查询Entity Framework(1)
  9. 1493: [NOI2007]项链工厂
  10. 【转】Android source build/envsetup.sh学习笔记
  11. [GUIDE] How to install Scipy in Maya Windows 64 bit - Google 网上论坛 - Google Chrome
  12. springMVC能做什么,做j2ee时候要考虑什么
  13. MySQL 遇到的问题:在服务里找不到自己的 MySQL,以及在命令行窗口中运行服务出现的问题。
  14. oracle slient静默安装并配置数据库及仅安装数据库不配置数据库shell
  15. JavaScript代码规范和性能整理
  16. Node.js系列-express(上)
  17. C为变量提供了5中存储模型(类)
  18. jdbc封装的类
  19. 第一个Python小爬虫
  20. css3新增内容

热门文章

  1. 所遇Oracle错误代码
  2. HttpURLConnection 发送http请求帮助类
  3. Mysql 5.7存储过程的学习
  4. RabbitMq学习1-介绍、安装和配置
  5. nginx配置反向代理,解决前端开发的跨域问题
  6. mailstats - 显示邮件状态信息
  7. VB中preserve的用法
  8. 北京师范大学第十五届ACM决赛-重现赛K Keep In Line ( 字符串模拟实现)
  9. GUI学习之n——自定义信号
  10. Maven高级