在 OpenGL 中如何对图片进行裁剪
在 OpenGL 中对图片进行裁剪需要使用纹理坐标来实现。纹理坐标是一个二维向量,范围在 [0,1] 之间,表示纹理图像的坐标。通过设置纹理坐标,可以选择纹理图像中的一部分进行显示,从而实现裁剪效果。
具体步骤如下:
-
加载纹理图像并创建纹理对象。
-
设置纹理坐标,指定要显示的部分。
-
绘制图形时,使用指定的纹理坐标进行纹理映射。
示例代码如下:
// 加载纹理图像并创建纹理对象
GLuint textureID;
glGenTextures(1, &textureID);
glBindTexture(GL_TEXTURE_2D, textureID);
// 设置纹理参数
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
// 加载纹理图像数据
// ...
// 设置纹理坐标
GLfloat texCoords[] = {
0.2f, 0.2f,
0.8f, 0.2f,
0.8f, 0.8f,
0.2f, 0.8f
};
// 绘制图形
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, textureID);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glTexCoordPointer(2, GL_FLOAT, 0, texCoords);
// 绘制图形
// ...
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
glDisable(GL_TEXTURE_2D);
在上述示例代码中,设置了一个四边形的纹理坐标,通过设置纹理坐标来指定要显示的纹理图像的部分。在绘制图形时,使用 glTexCoordPointer 函数指定纹理坐标,然后绘制图形即可
原文地址: https://www.cveoy.top/t/topic/eDTR 著作权归作者所有。请勿转载和采集!