【问题标题】:Draw random points绘制随机点
【发布时间】:2012-10-01 04:34:59
【问题描述】:

我的窗口大小为 {0,0},{1e6,1e6}。我在这个区域内创建了 1000*1000 的网格。
我正在尝试在该区域创建随机点。

glEnable( GL_POINT_SMOOTH );
glEnable( GL_BLEND );
glPointSize( 200 );
for( int i = 0; i < 1e6; i++ )
{
    glColor3ub(0,255,0);
    // width and height are 1e6.
    int x = rand() % WIDTH; 
    int y = rand() % HEIGHT; 
    glBegin( GL_POINTS );
    glVertex2i( x, y );
    glEnd();
}
glFlush();  
glDisable( GL_BLEND );

x 和 y 是随机数。但是,所有点都仅绘制在窗口的左下角。

【问题讨论】:

  • 你调用 glViewport 了吗?它的论据是什么?您的视口可能不是矩形 (0, 0)->(WIDTH, HEIGHT)
  • 我已经通过了实际的宽度和高度。我猜生成的随机数太小了,所以它们只出现在左下角。我想要均匀分布的点。你能告诉我是否有更好的方法吗?
  • 我要生成1000000分
  • 我在下面给出了一些示例代码。是你想要的吗?
  • x = rand()/(float)RAND_MAX; y= rand()/(float)RAND_MAX;光盘[i].x=x宽度; discs[i].y=yHEIGHT;非常感谢。使用此代码,它可以工作

标签: opengl


【解决方案1】:

确保您平台上的RAND_MAX 大于1e6。否则,您将看到的最大 x/y 值将是 RAND_MAX-1,而不是您所期望的 1e6

或者生成随机数without modulo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-21
    • 2019-01-17
    • 2013-04-08
    • 2013-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-07
    相关资源
    最近更新 更多