【问题标题】:glDrawArrays,dynamically change the number of points being drawn?glDrawArrays,动态改变正在绘制的点数?
【发布时间】:2011-04-11 08:45:07
【问题描述】:

我有一个关键功能/事件允许用户减少“numParticles”

   glDrawArrays( GL_POINTS, 0, numParticles );

但仅更改此变量不会更改正在绘制的点数

所以我要修改原来的“顶点”数组?

现在,我添加了

glClear(GL_COLOR_BUFFER_BIT);

我可以看到点数现在正在改变。

但是将“numParticles”减为零后,屏幕上还有点吗?

它似乎也不会影响着色器更新的点?

Code

【问题讨论】:

  • 应该的。您是否在重绘之前刷新显示,例如使用glClear(GL_COLORBUFFER_BIT)?
  • 请向我们展示整个绘图功能的一些上下文。

标签: opengl


【解决方案1】:

您的标题中有错误:

static int numParticles = 50000;

这将为每个对象(文件)创建局部变量,然后对象 draw.o 将拥有自己的变量,ogl2particle.o 不会更改。 相反,您应该使用:

extern int numParticles = 50000;

在任何但只有一个文件中:

int numParticles = 50000;

您可以在 http://en.wikipedia.org/wiki/External_variable 阅读有关 c 中全局变量的信息

【讨论】:

    猜你喜欢
    • 2012-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-12
    相关资源
    最近更新 更多