Как использовать openGL нарисовать точку? (C ++) - PullRequest
2 голосов
/ 03 мая 2020

Я хочу использовать openGL, чтобы нарисовать систему координат ,, а в коде нарисованы ось X и Y. Однако исходная точка не может быть нарисована. Как решить проблему? Я думаю, что код правильный и поиск ресурса в inte rnet. Нет решения для отладки.

Вот мой код:

#define FREEGLUT_STATIC
#include <GL/freeglut.h>
void define_to_OpenGL();

void main(int argc, char** argv) {
    glutInit(&argc, argv);

    //task2
    glutInitWindowSize(600, 400);
    glutInitWindowPosition(50, 50);

    glutCreateWindow("Graphics Perimitives");

    glutDisplayFunc(define_to_OpenGL);
    glutMainLoop();
}


void define_to_OpenGL() {
    glClearColor(1, 1, 1, 1);
    glClear(GL_COLOR_BUFFER_BIT);


    //TASK 2        
    glMatrixMode(GL_PROJECTION); 
    glLoadIdentity();
    gluOrtho2D( -100, 800, -400, 400); 

    //TASK 3
    glLineWidth(1.0);
    glColor3f(0,0,0);

    glBegin(GL_LINES);
        glVertex2f(0, 0);
        glVertex2f(450, 0);
    glEnd();

    glBegin(GL_LINES);
        glVertex2f(0, -150);
        glVertex2f(0, 150);
    glEnd();


    //TASK 4
    glPointSize(100.0);
    glColor3f(0, 1, 0);
    glBegin(GL_POINT);
        glVertex2f(450, 0);
    glEnd();


    //TASK 5
    //TASK 6,7,8

    glFlush();



}


Я знаю, что это простая проблема. Пожалуйста, помогите мне, спасибо!

1 Ответ

1 голос
/ 03 мая 2020

GL_POINT не является допустимым типом примитива. Тип примитива для точек GL_POINTS. См. Примитивы точек .
Кроме того, размер точек ограничен. 100,0 превышает лимит. Уменьшите размер точки:

glPointSize(10.0);
glColor3f(0, 1, 0);
glBegin(GL_POINTS);
    glVertex2f(450, 0);
glEnd();

GL_POINT - константа перечислителя, используемая для указания режима многоугольника (glPolygonMode).

Максимальная точка размер можно получить по glGetFloatv, по параметру GL_POINT_SIZE_MAX.

GLfloat max_point_size;
glGetFloatv(GL_POINT_SIZE_MAX, max_point_size);
...