我正在尝试绘制一个网格,应该看起来像这样:
但是我得到的却是:一个黑屏,左边和底部边框有两条橙色线
这是我的代码:
#include <iostream>
#include <GL/glut.h>
#define WIDTH 1000
#define HEIGHT 400
#define OFFSET 200
using namespace std;
float x = 0;
float y = 0;
void init (void)
{
//glClearColor (1.0, 1.0, 1.0, 0.0);
glClear (GL_COLOR_BUFFER_BIT);
glMatrixMode (GL_PROJECTION);
glLoadIdentity();
glOrtho (0.0, 5.0, 0.0, 5.0, -2.0, 2.0);
glMatrixMode (GL_MODELVIEW);
glLoadIdentity();
}
void drawline (float x1, float y1, float x2, float y2)
{
glBegin (GL_LINES);
glVertex2f (x1, y1);
glVertex2f (x2, y2);
glEnd();
}
void drawgrid()
{
glClearColor (1.0, 1.0, 1.0, 1.0);
glColor3ub (240, 57, 53);
for (float i = 0; i < HEIGHT; i += 10)
{
if ((int) i % 100 == 0) glLineWidth (3.0);
else if ((int) i % 50 == 0) glLineWidth (2.0);
else glLineWidth (1.0);
drawline (0, i, (float) WIDTH, i);
}
for (float i = 0; i < WIDTH; i += 10)
{
if ((int) i % 100 == 0) glLineWidth (3.0);
else if ((int) i % 50 == 0) glLineWidth (2.0);
else glLineWidth (1.0);
drawline (i, 0, i, (float) HEIGHT);
}
}
void display()
{
drawgrid();
glFlush();
glutSwapBuffers();
}
int main (int argc, char **argv)
{
glutInit (&argc, argv);
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGBA);
glutInitWindowSize (WIDTH, HEIGHT);
glutCreateWindow ("ECG");
init();
glutDisplayFunc (display);
glDisable (GL_TEXTURE_2D);
glutMainLoop();
return 0;
}
我做错了什么?如何使背景变白并正确绘制网格?
GLUT_DOUBLE
,但没有任何变化。 - razzglOrtho()
调用)来处理如此大的WIDTH
和HEIGHT
?你的i
步长比视景体大两倍! - genpfault