Отрисовка GL_TRIANGLES с помощью OpenGL в C ++

Я пытаюсь использовать функцию для визуализации треугольника с помощью OpenGL. Форма не появляется, и я не знаю почему. Я думаю, это могло быть просто из-за расположения вершин.

Основной метод:

 int main() {


    glutInitWindowSize(400, 400);
    glutInitWindowPosition(200, 200);
    glutCreateWindow("Test");
    Initialize();
    glutDisplayFunc(Draw);
    glutMainLoop();
    return 0;
}

Метод инициализации:

 void Initialize() {
    glClearColor(0.1, 0.1, 0.1, 0.0);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0);
}

Функция drawTriangle:

 void drawTriangle(int v1x, int v1y, int v2x, int v2y, int v3x, int v3y, int red, int green, int blue)
{
    //arguments are: "vertex 1 x coordinate", "vertex 1 y coordinate" etc
    glClear(GL_COLOR_BUFFER_BIT);
    glColor3f(1.0, 1.0, 1.0);

    glBegin(GL_TRIANGLES);
        glVertex2f(v1x, v1y); // v1
        glVertex2f(v2x, v2y); // v2
        glVertex2f(v3x, v3y); // v3
    glEnd();

    glFlush();
}

Метод рисования:

void Draw() {
    drawTriangle(3.0, 2.9, 300, 300, 100, 100, 10, 0, 0);
}

person Community    schedule 29.06.2014    source источник
comment
Да, ваши координаты далеко за пределами экрана. Вы должны познакомиться с тем, как работают преобразования координат GL и что делает glOrtho().   -  person derhass    schedule 29.06.2014


Ответы (1)


Ваши координаты не вписываются в определенный ортоблок

replace : glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0); 
with this:     glOrtho(0.0, 400.0, 0.0, 400.0, -1.0, 1.0);

Это временное исправление, оно поможет вам понять, как работает glOrtho. Кроме того, вы передаете аргументы типа float в функцию drawTriangle, поэтому вы должны заменить все параметры с int на float.

person OmarAsifShaikh    schedule 29.06.2014
comment
Большое спасибо! Я все еще учусь, так что с этого момента я буду знать. - person ; 30.06.2014