我想使用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/