如何裁剪加载了SOIL的图像

Rafutk

我试图裁剪通过SOIL库加载的图像,然后再将其用作纹理。

  • 因此,首先,我如何加载图像,然后将其转换为纹理?
  • 其次,如何修改(裁剪等)加载的图像?

这是我想做的:

unsigned char * img = SOIL_load_image("img.png", &w, &h, &ch, SOIL_LOAD_RGBA);
// crop img ...
// cast it into GLuint texture ...
雅科夫·加尔卡(Yakov Galka)

您可以通过使用以下glPixelStorei功能来加载图像的一部分

// the location and size of the region to crop, in pixels:
int cropx = ..., cropy = ..., cropw = ..., croph = ...;

// tell OpenGL where to start reading the data:
glPixelStorei(GL_UNPACK_SKIP_PIXELS, cropx);
glPixelStorei(GL_UNPACK_SKIP_ROWS, cropy);

// tell OpenGL how many pixels are in a row of the full image:
glPixelStorei(GL_UNPACK_ROW_LENGTH, w);

// load the data to a previously created texture
glTextureSubImage2D(texure, 0, 0, 0, cropw, croph, GL_SRGB8_ALPHA8, GL_UNSIGNED_BYTE, img);

这是来自OpenGL规范的图表,可能会有所帮助: 子图图

编辑:如果您使用的是较旧的OpenGL(大于4.5),则将glTextureSubImage2D调用替换为

glTexImage2D(GL_TEXTURE_2D, 0, GL_SRGB8_ALPHA8, cropw, croph, 0, GL_RGBA, GL_UNSIGNED_BYTE, img);

确保在此调用之前创建并绑定纹理(与通常创建纹理的方式相同)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何安装SOIL(简单OpenGL图像加载器)?

来自分类Dev

如何从相机裁剪图像

来自分类Dev

如何裁剪图像并保存?

来自分类Dev

如何使用AsciiDoctor裁剪/裁剪图像

来自分类Dev

OpenGL-SOIL无法加载JPG或PNG图像

来自分类Dev

使用SOIL加载jpeg图像时OpenGL处理缓慢

来自分类Dev

使用BitmapFactory从流/文件加载裁剪的图像

来自分类Dev

如何使用mogrify裁剪图像

来自分类Dev

图像翻译被裁剪(如何防止)

来自分类Dev

如何使用drawImage()裁剪图像?

来自分类Dev

如何调整裁剪图像的尺寸?

来自分类Dev

如何裁剪图像宽度svg?

来自分类Dev

如何使用CSS裁剪图像

来自分类Dev

在 NiFi 中如何裁剪图像?

来自分类Dev

如何裁剪图像并设置其与原始图像的裁剪范围

来自分类Dev

如何从图像中裁剪出最大的矩形

来自分类Dev

如何借助模板坐标裁剪图像

来自分类Dev

如何使用ImageMagick提高裁剪图像的性能?

来自分类Dev

如何从图像中裁剪边框/空白?

来自分类Dev

如何从Instagram API获取裁剪的图像?

来自分类Dev

如何使用jcrop裁剪不同尺寸的图像

来自分类Dev

如何缩放,旋转和裁剪图像

来自分类Dev

如何裁剪iOS中圆圈内的图像

来自分类Dev

如何裁剪不拉伸背景图像

来自分类Dev

如何在Titanium中以圆形裁剪图像?

来自分类Dev

画布缩放时如何裁剪图像

来自分类Dev

如何在css中进行图像裁剪

来自分类Dev

如何在Android中裁剪图像?

来自分类Dev

如何动态裁剪图像中的数字?