这个问题是我正在做的一个更大的项目的一部分,但是这里有一个简单的例子,我已经编写了一个在垂直线上显示5个点的代码。在第一个例子中,注意m
,其中存储要绘制的点,被初始化为float m[2] = {0.0f,0.0f}
。
代码:
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>
#include <iostream>
#include <cmath>
const int WINDOW_WIDTH = 800;
const int WINDOW_HEIGHT = 600;
const int SPIRAL_SIZE = 200;
float m[2] = {0.0f, 0.0f};
void display()
{
glPointSize(3.0);
glClearColor(0.0, 0.0, 0.0, 1.0);
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0, 1.0, 1.0);
for (int i = 1; i <= 5; ++i)
{
// Draw the point
glBegin(GL_POINTS);
glVertex2f(m[0], m[1]);
m[1] += 0.05;
glEnd();
}
glutSwapBuffers();
}
int main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize(WINDOW_WIDTH, WINDOW_HEIGHT);
glutCreateWindow("Example");
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
以下是预期的输出:
但是当我把m
的初始化改为m[2] = {10.0f, 10.0f}
的时候,我得到了一个空白的输出窗口:
我已经尝试过:
1.卸下glutSwapBuffers
。
1.试图从其他不同的点开始绘图。
1.考虑到这可能是这个特定文件的一个问题,我尝试了我的其他项目以及相同的结果。(也许我在他们犯了同样的错误,以及)。
我的项目要求我从远离原点的位置开始绘制点。我做错了什么,或者我还需要做什么来完成它?
1条答案
按热度按时间tktrz96b1#
窗口的左下角坐标是(-1,-1),左上角坐标是(1,1)。因此(10,10)不在窗口中。您可以使用
glOrtho
更改它。例如: