iPhone OpenGL:平铺纹理
我有点迷恋瓷砖纹理。基本上,我想在变换对象时平铺纹理。所以当我缩放到20,20,20时,我希望纹理平铺。纹理设置为1x1iPhone OpenGL:平铺纹理,iphone,opengl-es,Iphone,Opengl Es,我有点迷恋瓷砖纹理。基本上,我想在变换对象时平铺纹理。所以当我缩放到20,20,20时,我希望纹理平铺。纹理设置为1x1 - (void)loadTextures:(NSString *)textureName andWithIndex:(int)index { // load image as a CG ref CGImageRef textureImage = [UIImage imageNamed:textureName].CGImage; // if failed,
- (void)loadTextures:(NSString *)textureName andWithIndex:(int)index {
// load image as a CG ref
CGImageRef textureImage = [UIImage imageNamed:textureName].CGImage;
// if failed, bail
if (!textureImage) {
NSLog(@"Error: failed to load texture");
return;
}
// figure out the width and height
int texWidth = CGImageGetWidth(textureImage);
int texHeight = CGImageGetHeight(textureImage);
// alloc space for the texture
GLubyte *textureData = (GLubyte *)malloc(texWidth * texHeight * 4);
// create a CA context ref
CGContextRef textureContext = CGBitmapContextCreate(
textureData, texWidth, texHeight, 8, texWidth * 4,
CGImageGetColorSpace(textureImage),
kCGImageAlphaPremultipliedLast
);
// draw the image to in-memory buffer
CGContextDrawImage(textureContext, CGRectMake(0,0,texWidth,texHeight), textureImage);
// done with context - release it
CGContextRelease(textureContext);
// have GL create handle for our texture
glGenTextures(1, &textures[index]);
// tell GL that the image is 2D
glBindTexture(GL_TEXTURE_2D, textures[index]);
// send our data down to GL, copy into graphics hardware
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, texWidth, texHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, textureData);
// free our in-memory copy of the data
free(textureData);
// specify min/max filters
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
// tell GL to turn on textures
glEnable(GL_TEXTURE_2D);
}
这似乎拉伸了纹理
glMatrixMode(GL_TEXTURE);
glLoadIdentity();
glScalef(20,20,1);
glMatrixMode(GL_MODELVIEW);