定义视口
由于在不同环境下窗口的大小变化检测和处理方式各不相同,GLUT库为此专门提供了glutReshapeFunc函数,这个函数注册了一个回调,供GLUT库在窗口维度改变时调用。其接口在glut.h文件中,如下:
/* GLUT window callback sub-API.*/
extern void APIENTRY glutReshapeFunc(void (*func)(int width, int height));
func函数在窗口大小改变时接受新的宽度和高度。我们可以据此通过OpenGL函数glViewport,修改从目的坐标系到屏幕坐标系上的映射。其接口在glew.h文件中,如下:
GLAPI void GLAPIENTRY glViewport(GLint x, GLint y, GLsizei width, GLsizei height);
参数x、y代表窗口中视口的左下角坐标,窗口左下角坐标为(0,0)。窗口宽度width和高度height是用像素表示的。
纹理坐标
纹理贴图中的纹理单元是作为一个更加抽象(经常是浮点值)的纹理坐标,而不是作为内存位置(在像素图中则是这样)进行寻址的。典型情况下,纹理坐标是作为0.0到1.0范围内的浮点值指定的。