我试图将OpenGL设置为渲染2D内容。
int width = 640, height = 480;
void render() {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glClearColor(0.1f, 0.1f, 0.1f, 0.1f);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
int w, h;
glfwGetFramebufferSize(window, &w, &h);
glOrtho(0.0, w, h, 0.0, -1.0, 10.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
//RECTANGLE
glColor4f(0, 0, 0, 0);
glBegin(GL_QUADS);
glVertex2f(0,0);
glVertex2f(width, 0);
glVertex2f(width, height);
glVertex2f(0, height);
glEnd();
}
当我现在调整窗口大小时,矩形会改变它的大小(以像素为单位)而不是保持它的大小640x480它会变小,为什么会这样?
据我了解glOrtho,glOrtho(0.0, w, h, 0.0, -1.0, 10.0);
应设置一个正交相机,用窗口大小填充窗口。
希望澄清。提前致谢
答案 0 :(得分:1)
您没有更新视口转换。你也应该添加它:
int w, h;
glfwGetWindowSize(window, &w, &h);
glViewport(0, 0, w, h); // <------------ THIS
glOrtho(0.0, w, h, 0.0, -1.0, 10.0);
据我所知glOrtho glOrtho(0.0,w,h,0.0,-1.0,10.0);应该设置一个正交相机,用窗口的大小填充窗口。
没有。 glOrtho
设置一个摄像头,使(0,0)映射到左上角,(w,h)映射到视口的右下角 。由于您没有更改视口,(宽度,高度)现在会映射到视口矩形内的某处,使四边形更小。