Снижение производительности с GL_LINES? - PullRequest
0 голосов
/ 22 апреля 2020

Я пытался нарисовать простую линию в OpenGL:

#include "stdafx.h"
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
#include <freeglut.h>

float startX = -180.0f;
float startZ = -100.0f;

float qtyX = 36;
float qtyZ = 20;

float red = 0.0f, green = 0.0f, blue = 0.0f;

void init(void)
{
    glClearColor(0.0, 0.0, 0.0, 0.0);
}

void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT);
    glLoadIdentity();

    gluLookAt(0.0, 50.0f, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.0);

    glBegin(GL_LINES);
    glVertex3f(0.0f, 0.0f, 0.0f);
    glVertex3f(50.0f, 50.0f, 50.0f);
    glEnd();

    //glutWireSphere(20.0f, 20.0f, 20.0f);

    glutSwapBuffers();
    glFlush();
}

void reshape(int w, int h)
{
    glViewport(0, 0, (GLsizei)w, (GLsizei)h);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glFrustum(-64.0, 64.0, -36.0, 36.0, 10, 10000.0);

    glMatrixMode(GL_MODELVIEW);
}

int main(int argc, char** argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
    glutInitWindowSize(1280, 720);
    glutInitWindowPosition(100, 100);
    glutCreateWindow(argv[0]);
    init();
    glutDisplayFunc(display);
    glutIdleFunc(display);
    glutReshapeFunc(reshape);
    glutMainLoop();
    return 0;
}

Однако, когда я запускаю программу, производительность значительно падает, а через несколько секунд она перестает отвечать (мне нужно запустить диспетчер задач и принудительно выйти из программы). Однако, когда я отключаю линию и рисую glutWireSphere (или многоугольник), производительность нормальная.

Есть ли проблема с моим кодом? Или, возможно, GL_LINES устарела?

Windows 10, 1070 MaxQ, Visual Studio

...