gpt4 book ai didi

iphone - GLKit 中的纹理映射不仅仅适用于设备

转载 作者:可可西里 更新时间:2023-11-01 03:30:46 25 4
gpt4 key购买 nike

我使用了 this link 中的代码映射人脸的纹理。此代码使用 GLKIT 来呈现图像。代码在模拟器中运行良好,但如果我在设备中运行,则相同的代码无法运行。以下是它在设备中而不是在我的 ipad 中工作的图像的屏幕截图。

我用来加载纹理的代码:

- (void)loadTexture:(UIImage *)textureImage
{
glGenTextures(1, &_texture);
glBindTexture(GL_TEXTURE_2D, _texture);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

CGImageRef cgImage = textureImage.CGImage;
float imageWidth = CGImageGetWidth(cgImage);
float imageHeight = CGImageGetHeight(cgImage);
CFDataRef data = CGDataProviderCopyData(CGImageGetDataProvider(cgImage));

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, imageWidth, imageHeight, 0, GL_RGBA,
GL_UNSIGNED_BYTE, CFDataGetBytePtr(data));
}

模拟器图片:

Output in simulator

设备中的相同代码提供以下输出:

Output in Device

有什么我遗漏的吗?

最佳答案

  1. 使用 Apple 内置的 1 行方法加载——不要编写自己的(损坏的)实现!

    https://developer.apple.com/library/mac/#documentation/GLkit/Reference/GLKTextureLoader_ClassRef/Reference/Reference.html#//apple_ref/occ/clm/GLKTextureLoader/textureWithContentsOfFile:options:error :


  1. 或者,如果你必须自己做,你有两个可疑的部分:

    2.1。摆脱这一行:

    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

    2.2。这一行使用了一个超出范围的数字,这不是很好:

    glGenTextures(1, &_texture);


  1. 如果由于某种原因您不能使用 Apple 的代码(例如,您想从内存图像加载原始数据),这里是工作代码的复制/粘贴:

    NSData* imageData = ... // fill this yourself
    CGSize* imageSize = ... // fill this yourself

    GLuint integerForOpenGLToFill;
    glGenTextures(1, &integerForOpenGLToFill);

    glBindTexture( GL_TEXTURE_2D, integerForOpenGLToFill);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);

    unsigned char* pixelData = (unsigned char*) malloc( [imageData length] * sizeof(unsigned char) );
    [imageData getBytes:pixelData];
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, imageSize.width, imageSize.height, 0, GL_RGBA, GL_UNSIGNED_BYTE, pixelData);

关于iphone - GLKit 中的纹理映射不仅仅适用于设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15384079/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com