OpenGL 视差贴图 - 实现更加逼真的立体感
视差贴图(parallax mapping)是一种用于增强3D图形表现力的技术,它能够实现更加逼真的立体感,让表面看起来更加有立体感。下面,我们将通过使用OpenGL来实现一个基本的视差贴图效果。
首先,我们需要加载需要进行视差贴图的纹理图像,并进行初始化操作:
//加载纹理图像
GLuint diffuseMap = loadTexture("diffuse.jpg");
GLuint normalMap = loadTexture("normal.jpg");
GLuint heightMap = loadTexture("height.jpg");
//顶点数据初始化
GLfloat vertices[] = {
// 顶点坐标 // 纹理坐标 // 法向量 // 切线向量
0.5f, 0.5f, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f,
0.5f, -0.5f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f,
-0.5f, -0.5f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f,
-0.5f, 0.5f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f
};
GLuint indices[] = { 0, 1, 3, 1, 2, 3 };
//生成VAO、VBO、EBO对象
GLuint VAO, VBO, EBO;
glGenVertexArrays(1, &VA