delphi – 什么可以使用VBO的glDrawArrays不能绘制任何东西?
发布时间:2020-12-15 09:29:25 所属栏目:大数据 来源:网络整理
导读:我正在尝试使用OpenGL 2.0渲染上下文来弄清楚如何使用VBO.我已经设置了2D(正交)渲染上下文,我可以绘制一个像这样的简单矩形: glBegin(GL_QUADS); glColor4f(1,1,1); glVertex2f(0,0); glVertex2f(0,10); glVertex2f(100,0);glEnd; 但是当我尝试使用VBO时,它
我正在尝试使用OpenGL 2.0渲染上下文来弄清楚如何使用VBO.我已经设置了2D(正交)渲染上下文,我可以绘制一个像这样的简单矩形:
glBegin(GL_QUADS); glColor4f(1,1,1); glVertex2f(0,0); glVertex2f(0,10); glVertex2f(100,0); glEnd; 但是当我尝试使用VBO时,它会失败.我像这样设置VBO,使用与以前相同的数据: procedure initialize; const VERTICES: array[1..8] of single = ( 0,10,100,0 ); begin glEnable(GL_VERTEX_ARRAY); glGenBuffers(1,@VBO); glBindBuffer(GL_ARRAY_BUFFER,VBO); glBufferData(GL_ARRAY_BUFFER,sizeof(VERTICES),@VERTICES[1],GL_DYNAMIC_DRAW); glBindBuffer(GL_ARRAY_BUFFER,0); end; 我试着像这样画: begin glColor4f(1,1); glEnableClientState(GL_VERTEX_ARRAY); glBindBuffer(GL_ARRAY_BUFFER,VBO); glVertexPointer(2,GL_FLOAT,0); glDrawArrays(GL_QUADS,1); glBindBuffer(GL_ARRAY_BUFFER,0); end; 从我读过的所有内容中,都应该有效.我通过gDEBugger运行它并且没有GL错误,并且VBO中的数据正在正确加载,但是当我交换缓冲区时实际上没有出现.更改顶点数组中的数据以使用标准化坐标(从0..1.0开始)也不会显示任何内容.知道我做错了什么吗? (假设渲染上下文本身设置正确,GL函数指针都已正确加载.) 解决方法
看起来你正在尝试用单个顶点绘制四边形.你还需要三个: glDrawArrays(GL_QUADS,4); 或切换到点: glDrawArrays(GL_POINTS,1); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |