На самом деле я хочу показать изображение идентичного размера с окном, которое я создал.Но я обнаружил, что прямоугольник с текстурой изображения будет немного увеличен, так что край изображения будет невидимым.
Таким образом, я провел следующий эксперимент: Для моего размера окна 500x500 я нарисовал прямоугольник размером 500x500 красного цвета.во-первых, и нарисуйте второй с (500-2) * (500-2) в черном.Я получаю только черное окно.Увеличивая значение d в коде до 8, красные линии показывают слева / справа и снизу, а верхнюю показывают до d = 33.
Я думал, что это из-за глубины или проекции, но яне знаю как это исправить.Есть ли какие-либо предложения ??
Вот мой пример кода:
#include <GL/glut.h> /* glut.h includes gl.h and glu.h*/
void rectangle(float x, float y, float x1, double y1, float r, float g, float b)
{
glColor3f(r, g, b);
glBegin(GL_QUADS);
glVertex2f(x, y);
glVertex2f(x, y1);
glVertex2f(x1, y1);
glVertex2f(x1, y);
glEnd();
}
void display()
{
/* clear window */
glClear(GL_COLOR_BUFFER_BIT);
int d = 33;
// draw rectangle in red
rectangle(d, d, 500 - d, 500 - d, 1, 0, 0);
// draw rectangle in black
rectangle(d + 1, d + 1, 500 - d - 1, 500 - d - 1, 0, 0, 0);
/* flush GL buffers */
glFlush();
}
void init()
{
/* set clear color to black */
glClearColor(0.0, 0.0, 0.0, 0.0);
/* set fill color to white */
/* set up standard orthogonal view with clipping */
/* box as cube of side 2 centered at origin */
/* This is default view and these statements could be removed */
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0, 500, 0, 500);
}
int main(int argc, char** argv)
{
/* Initialize mode and open a window in upper left corner of
/* screen */
/* Window title is name of program (arg[0]) */
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(500, 500);
glutInitWindowPosition(0, 0);
glutCreateWindow("simple");
glutDisplayFunc(display);
init();
glutMainLoop();
}