• johnjar © (08.04.11 19:56) [0]
    johnjar ©   (08.04.11 17:28)  

    Здравствуйте,
    Только что столкнулся с большой проблемой :
    немогу с помощью OpenGL нарисовать линию или точку
    многоугольники при этом отрисовываются нормально.
    Просмотрел множество сайтов, код оттуда копировал - ничего не помогло

    glClearColor(1,1,1,1);
    glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT) ;
    glLoadIdentity;
    glPointSize(15);
    glLineWidth(3);  

    glBegin(GL_LINES);
    glColor3d(1,0,0);    
    glVertex3d(-4.5,3,0); // первая линия
    glVertex3d(-3,3,0);
    glColor3d(0,1,0);    
    glVertex3d(-3,3.3,0); // вторая линия
    glVertex3d(-4,3.4,0);
    glEnd();

    glLineWidth(3);    

    glBegin(GL_LINE_STRIP);
    glColor3d(1,0,0);
    glVertex3d(-2.7,3,0);
    glVertex3d(-1,3,0);
    glColor3d(0,1,0);
    glVertex3d(-1.5,3.3,0);
    glColor3d(0,0,1);
    glVertex3d(-1,3.5,0);
    glEnd();

    SwapBuffers(DC);
    <Цитата>

    johnjar ©   (08.04.11 17:30) [1]

    Причем такой код работает - разноцветные треугольники вращаются

    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
    i:=i+5;
    glLineWidth(3);
    glClearColor(1,1,1,1);
    glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT) ;
    glLoadIdentity;

    glRotatef(i,0,1,1);
    glRotatef(i,0,0,1);

    glBegin(  GL_TRIANGLES);
    glColor3f(1,0,0);
    glVertex3f( 0.0, 0, 0.0);
    glColor3f(0,1,0);
    glVertex3f(-1.0,-1.0, 0.0);
    glColor3f(0,0,1);
    glVertex3f( 1.0,-1.0, 0.0);
    glEnd();

    glBegin(  GL_TRIANGLES);
    glColor3f(1,0,0);
    glVertex3f( 0.0, 0, 0.0);
    glColor3f(0,1,0);
    glVertex3f(-1.0,1.0, 0.0);
    glColor3f(0,0,1);
    glVertex3f( 1.0,1.0, 0.0);
    glEnd();

    glRotatef(i,1,0,1);
    glRotatef(-i,0,1,1);
    glBegin(  GL_TRIANGLES);
    glColor3f(1,0,0);
    glVertex3f( 0.0, 0, 0.0);
    glColor3f(0,1,0);
    glVertex3f(-1.0,1.0, 0.0);
    glColor3f(0,0,1);
    glVertex3f( -1.0,-1.0, 0.0);
    glEnd();

    glBegin(  GL_TRIANGLES);
    glColor3f(1,0,0);
    glVertex3f( 0.0, 0, 0.0);
    glColor3f(0,1,0);
    glVertex3f(1.0,1.0, 0.0);
    glColor3f(0,0,1);
    glVertex3f(1.0,-1.0, 0.0);
    glEnd();

    SwapBuffers(DC);      
    end;
  • Чайник © (10.04.11 18:58) [1]
    Приведенный тобой код должен работать.
    Варианты:
    1. у тебя кривоватая видеокарта, которая не обрабатывает чиста с двойной точностью (double), только single. Попробуй поменять glVertex3d на glVertex3f.

    2. А что там у тебя в FormResize?
    Как задается перспектива - glOrtho/glFrustum, не забыл ли отъехать от плоскости z=0?
Есть новые Нет новых   [118667   +41][b:0][p:0]