нет изображения OpenGL

Тема в разделе "WASM.OpenGL", создана пользователем 4k0b, 4 фев 2007.

  1. 4k0b

    4k0b New Member

    Публикаций:
    0
    Регистрация:
    23 дек 2006
    Сообщения:
    14
    Добрый вечер. Пытаюсь освоить OpenGL.Вроде пока все понятно. Получилось визуализировать спираль Архимеда.все было отлично.Взялся переписать программу,которая отлично работает в BC и не вижу изображения. Подумал,что проблема в масштабировании..не знаю.Ничего не получается. Вот кусок кода
    GLfloat u(GLfloat x) { return sin(2*x)*cos(x);}
    GLfloat ut(GLfloat x) { return sin(2*x+M_PI/10);}
    void RenderScene(void)
    {
    int i;
    GLfloat a = 0.1f;GLfloat h = M_PI/100;GLfloat tau = h*h*h;
    GLfloat *yc,*yn,*yp,z,x;
    GLfloat _yc[300],_yn[300],_yp[300];
    yc = _yc; yn = _yn; yp = _yp;

    for(i=0;i<300;i++) { x =i*M_PI/300; yp = u(x);}
    for(i=0;i<300;i++) { x =i*M_PI/300; yc = yp + ut(x);}
    for(i=1;i<300-1;i++)
    {
    yn = a*tau*tau/(h*h)*(yc[i-1] - 2*yc + yc[i+1]) + yc - yp;
    }
    for(i=0;i<300;i++)
    {
    x =i*M_PI/300;
    glVertex3f(100*x,200-100*yn,0.0f);
    }
    С цветами все в порядке. Выводится просто черное окошко,а графика не видно.
    Думаю,ошибка как раз в последней строке,когда рисую точки.Может они вылезли за границы..Помогите пожалуйста.
     
  2. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    А glBegin/glEnd где? ;)
     
  3. 4k0b

    4k0b New Member

    Публикаций:
    0
    Регистрация:
    23 дек 2006
    Сообщения:
    14
    Это все есть..
     
  4. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Так жлБегин с каким параметром-то? Включен ли кулинг и депс тест? ПОкеж все.
     
  5. 4k0b

    4k0b New Member

    Публикаций:
    0
    Регистрация:
    23 дек 2006
    Сообщения:
    14
    #define M_PI 3.1415f

    GLfloat u(GLfloat x) { return sin(2*x)*cos(x);}
    GLfloat ut(GLfloat x) { return sin(2*x+M_PI/10);}


    void RenderScene(void)
    {
    int i;
    glBegin(GL_POINTS);
    GLfloat a = 0.1f;GLfloat h = M_PI/100;GLfloat tau = h*h*h;
    GLfloat *yc,*yn,*yp,z,x;
    GLfloat _yc[300],_yn[300],_yp[300];
    yc = _yc; yn = _yn; yp = _yp;

    for(i=0;i<300;i++) { x =i*M_PI/300; yp = u(x);}
    for(i=0;i<300;i++) { x =i*M_PI/300; yc = yp + ut(x);}
    for(i=1;i<300-1;i++)
    {
    yn = a*tau*tau/(h*h)*(yc[i-1] - 2*yc + yc[i+1]) + yc - yp;
    }
    //z=-50.0f;
    for(i=0;i<300;i++)
    {
    x =i*M_PI/300;
    glVertex3f(200*x,200-50*yn,0);
    //z+=0.5f;
    }
    glClear(GL_COLOR_BUFFER_BIT);
    glPushMatrix();
    glEnd();
    glPopMatrix();
    glutSwapBuffers();
    }

    void SetupRC()
    {
    glClearColor(0.0f, 0.0f, 0.0f, 1.0f );
    glColor3f(0.0f, 1.0f, 0.0f);
    }
    int main(int argc, char* argv[])
    {
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
    glutCreateWindow("Points Example");
    glutDisplayFunc(RenderScene);
    SetupRC();
    glutMainLoop();
    return 0;
    }
    Просто когда я программировал другой график,все было отлично и все видо. А этот не видно..
     
  6. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Ну так епт.
    Ты же после отрисовки тут же буффер и затираешь :)

    glClear(GL_COLOR_BUFFER_BIT);
     
  7. 4k0b

    4k0b New Member

    Публикаций:
    0
    Регистрация:
    23 дек 2006
    Сообщения:
    14
    Все равно такая же песня.
     
  8. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    4k0b
    Очистку надо делать в начале сцены. :)

    А вот это я вообще не понял.
    glPushMatrix();
    glEnd();
    glPopMatrix();
     
  9. 4k0b

    4k0b New Member

    Публикаций:
    0
    Регистрация:
    23 дек 2006
    Сообщения:
    14
    о,нашелся график все-таки.
    glVertex3f(x,yn,0);
    Спасибо _DEN_.Хотелось бы с тобой посоветоваться кое в каком вопросе. В личке сообщение тебе
     
  10. 4k0b

    4k0b New Member

    Публикаций:
    0
    Регистрация:
    23 дек 2006
    Сообщения:
    14
    Booster,это пережитки прежнего кода:)Все уже ништяк. Спасибо :)
     
  11. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    4k0b

    Вобще хорошо бы отказаться от бредовых библиотек типа glut, и делать все по-человечески. И кстати хорошо бы все матрицы инициализировать. Модельвьювную и проекционную хотя бы.
     
  12. 4k0b

    4k0b New Member

    Публикаций:
    0
    Регистрация:
    23 дек 2006
    Сообщения:
    14
    _DEN_Слушаюсь,шеф!Спасибо за инфу.