Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
opengl随机数生成_Opengl_Random_Srand - Fatal编程技术网

opengl随机数生成

opengl随机数生成,opengl,random,srand,Opengl,Random,Srand,我正在使用gl_line_strip创建简单的10x10迷宫。我有两种关于随机数生成的形状。问题是它总是生成相同的随机数(在我的例子中是零) void显示(void){ glClear(GLU颜色缓冲位); GL3F(1.0,0.0,0.0); GLdouble myArray[2]={0,0.1}; 闪烁; srand(时间(0)); 对于(int i=0;i

我正在使用gl_line_strip创建简单的10x10迷宫。我有两种关于随机数生成的形状。问题是它总是生成相同的随机数(在我的例子中是零)

void显示(void){
glClear(GLU颜色缓冲位);
GL3F(1.0,0.0,0.0);
GLdouble myArray[2]={0,0.1};
闪烁;
srand(时间(0));
对于(int i=0;i<10;i++)
{
glPushMatrix();
对于(int i=0;i<10;i++)
{
glBegin(GL_线_带);
a=myArray[(rand()%2)];
标准::cout
这是您的问题:a是一个int,myArray只包含小于0.5的double,因此矫揉造作意味着舍入,因此所有结果都是0。您必须将a的类型更改为
double

void display(void){
glClear( GL_COLOR_BUFFER_BIT); 
glColor3f(1.0, 0.0, 0.0);
GLdouble myArray[2] ={0,0.1};
GLint a;
srand(time(0));
for (int i = 0; i < 10; i++)
{
    glPushMatrix();
    for (int i = 0; i < 10; i++)
    {
        glBegin(GL_LINE_STRIP); 
        a = myArray[(rand() % 2)];
        std::cout<<a;
        if(a == 0.1){
            glVertex2f(0,a);
            glVertex2f(a,a);
            glVertex2f(a,0);
        }else{
            glVertex2f(0.1,a);
            glVertex2f(a,a);
            glVertex2f(a,0.1);}
        glEnd();
        glTranslatef(0.1,0,0);
    }
    glPopMatrix();
    glTranslatef(0,0.1,0);
}
glFlush();}
    a = myArray[(rand() % 2)];