c++ - 如何使用openGL绘制要点?(C++)

标签 c++ opengl opengl-compat

我想使用openGL绘制坐标系,并且代码绘制了x轴和y轴。但是,无法绘制原点。如何解决问题?我认为代码正确无误,并在互联网上搜索资源。调试没有解决方案。

这是我的代码:

#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();



}



我知道这是一个简单的问题。请帮助我,谢谢!

最佳答案

GL_POINT不是有效的原始类型。点的原始类型为GL_POINTS。参见Point primitives
此外,点的大小是有限的。 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);

关于c++ - 如何使用openGL绘制要点?(C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61576279/

相关文章:

c++ - 将 const 函数引用绑定(bind)到 lambda

c++ - sprintf/格式化字符串可以直接传递给函数吗?

OpenGL骨架动画

java - 绘制大量三角形的有效方法 (OpenGL)

opengl - GLSL固定功能片段程序替换

python - PyOpenGL 如何选择颜色来绘制每个形状?

c++ - 用于二进制分发的 clang 编译器标志(通用 CPU)

c++ - 诊断慢速链接

c++ - 绘制带有飞行路径的地球

python - 如何测试 pygame 屏幕中的 2d 点是否是 PyOpenGL 中 3d 对象的一部分?