一、实验原理及要求
参考 textureDemo 程序,实现太阳、地球和月亮程序中的纹理映射,其中太阳、地
球和月亮贴上各自的纹理,同时实现纹理和原来光照效果的混合,即既有光照效
果,又有纹理映射效果。
GLFW 是一个用于 OpenGL 应用程序开发的可移植库。它处理与 OpenGL 上下文创
建、窗口管理、分辨率切换、键盘、鼠标、操纵杆和时间输入以及基本线程设施相
关的系统特定任务。
GLEW 能自动识别当前平台所支持的全部 OpenGL 高级扩展涵数。只要包含 glew.h
头文件,就能使用 gl,glu,glext,wgl,glx 的全部函数。GLEW 支持目前流行的各种操
作系统
实验过程中,利用 VAO、VBO 来存储直线或者图案的点集 vertices,然后用
OpenGL 的绘制功能 glDrawElements 将直线或者图案绘制出来。
利用 Sphere 类绘制出三个球体,利用 camera 类实现视角任意转移。
二、代码设计和说明
1、设置纹理映射的各类参数(环绕方式等)
定义了三个纹理变量,texture、texture2、texture3,分别获取本地的太阳、地球、
月亮的纹理。
// 太阳的纹理
unsigned int texture;
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture); // all upcoming GL_TEXTURE_2D operations now
have effect on this texture object
// set the texture wrapping parameters
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); // set texture
wrapping to GL_REPEAT (default wrapping method)
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
// set texture filtering parameters