在 OpenGL 中对图片进行裁剪需要使用纹理坐标来实现。纹理坐标是一个二维向量,范围在 [0,1] 之间,表示纹理图像的坐标。通过设置纹理坐标,可以选择纹理图像中的一部分进行显示,从而实现裁剪效果。

具体步骤如下:

  1. 加载纹理图像并创建纹理对象。

  2. 设置纹理坐标,指定要显示的部分。

  3. 绘制图形时,使用指定的纹理坐标进行纹理映射。

示例代码如下:

// 加载纹理图像并创建纹理对象
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 函数指定纹理坐标,然后绘制图形即可

在 OpenGL 中如何对图片进行裁剪

原文地址: https://www.cveoy.top/t/topic/eDTR 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录