如何使用openGL画点?(c++)

Posted

技术标签:

【中文标题】如何使用openGL画点?(c++)【英文标题】:How to use openGL draw the point?(c++) 【发布时间】:2020-05-03 14:39:58 【问题描述】:

我想用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();






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

【问题讨论】:

原点无法绘制是什么意思?它是如何失败的?有什么症状? “调试没有解决方案”是什么意思?那你不知道怎么调试?你的调试没有找到解决办法? 【参考方案1】:

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

【讨论】:

谢谢! :) 很详细的解释!

以上是关于如何使用openGL画点?(c++)的主要内容,如果未能解决你的问题,请参考以下文章

Qt OpenGL点大小

如何使用 OpenGL 和 GLSL 改变颜色(C++)?

如何使用 c++ 和 opengl 在 mac 中创建窗口?

如何检测与 C++、OpenGL 和 freeglut 的冲突?

如何在 C++ 中获取 OpenGL 使用的总内存(以字节为单位)?

c++:如何使用 sdl 将位图加载到 opengl 中的多维数据集中?