gpt4 book ai didi

cocoa - Mac OS X 版本的Texture2D.m、.h 可用吗?

转载 作者:行者123 更新时间:2023-12-03 16:19:04 24 4
gpt4 key购买 nike

Apple 的 Texture2D 类对于 iOS 开发人员来说是一个非常有用的工具包。

问。此类有 Mac OS X 版本吗?

(我用 google 搜索过,但只能找到 iOS 实现,主要是通过 Cocos2D 项目。)

干杯。

最佳答案

你可以为它编写一个方法 - 这是我使用的:

typedef struct {
void *data;
GLfloat width;
GLfloat height;
} TextureData;

+ (TextureData)loadPngTexture:(NSString *)fileName {
CFURLRef textureURL = CFBundleCopyResourceURL(CFBundleGetMainBundle(),
(CFStringRef)fileName,
CFSTR("png"),
NULL);
NSAssert(textureURL, @"Texture name invalid");

CGImageSourceRef imageSource = CGImageSourceCreateWithURL(textureURL, NULL);
NSAssert(imageSource, @"Invalid Image Path.");
NSAssert((CGImageSourceGetCount(imageSource) > 0), @"No Image in Image Source.");
CFRelease(textureURL);

CGImageRef image = CGImageSourceCreateImageAtIndex(imageSource, 0, NULL);
NSAssert(image, @"Image not created.");
CFRelease(imageSource);

GLuint width = CGImageGetWidth(image);
GLuint height = CGImageGetHeight(image);

void *data = malloc(width * height * 4);

CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
NSAssert(colorSpace, @"Colorspace not created.");

CGContextRef context = CGBitmapContextCreate(data,
width,
height,
8,
width * 4,
colorSpace,
kCGImageAlphaPremultipliedFirst | kCGBitmapByteOrder32Host);
NSAssert(context, @"Context not created.");

CGColorSpaceRelease(colorSpace);
// Flip so that it isn't upside-down
CGContextTranslateCTM(context, 0, height);
CGContextScaleCTM(context, 1.0f, -1.0f);
CGContextSetBlendMode(context, kCGBlendModeCopy);
CGContextDrawImage(context, CGRectMake(0, 0, width, height), image);
CGImageRelease(image);
CGContextRelease(context);

return (TextureData){ data, width, height };
}

然后像这样使用它:

TextureData td = [Renderer loadPngTexture:@"atlas"];
// Or use GL_TEXTURE_2D
glTexImage2D(GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA, td.width, td.height, 0, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, td.data);

关于cocoa - Mac OS X 版本的Texture2D.m、.h 可用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3626693/

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