glDrawArrays,动态改变正在绘制的点数?
Posted
技术标签:
【中文标题】glDrawArrays,动态改变正在绘制的点数?【英文标题】:glDrawArrays,dynamically change the number of points being drawn? 【发布时间】:2011-04-11 08:45:07 【问题描述】:我有一个关键功能/事件允许用户减少“numParticles”
glDrawArrays( GL_POINTS, 0, numParticles );
但仅更改此变量不会更改正在绘制的点数
所以我要修改原来的“顶点”数组?
现在,我添加了
glClear(GL_COLOR_BUFFER_BIT);
我可以看到点数现在正在改变。
但是将“numParticles”减为零后,屏幕上还有点吗?
它似乎也不会影响着色器更新的点?
Code
【问题讨论】:
应该的。您是否在重绘之前刷新显示,例如使用glClear(GL_COLORBUFFER_BIT)
?
请向我们展示整个绘图功能的一些上下文。
Here is all the code
【参考方案1】:
您的标题中有错误:
static int numParticles = 50000;
这将为每个对象(文件)创建局部变量,然后对象 draw.o 将拥有自己的变量,ogl2particle.o 不会更改。 相反,您应该使用:
extern int numParticles = 50000;
在任何但只有一个文件中:
int numParticles = 50000;
您可以在 http://en.wikipedia.org/wiki/External_variable 阅读有关 c 中全局变量的信息
【讨论】:
以上是关于glDrawArrays,动态改变正在绘制的点数?的主要内容,如果未能解决你的问题,请参考以下文章
使用 glDrawArrays() 时如何获取 VBO 的长度以渲染所有顶点?
glDrawArrays 仅在原点绘制一个点(在 ubuntu 上带有 glut 的 OpenGL)
尝试从帧缓冲区传递纹理会导致 L_INVALID_OPERATION:glDrawArrays:绘制的源纹理和目标纹理相同