IPhone OpenGL: texture textures

I got a little stuck on tiled textures. Basically, I want to focus the textures while transforming the object. So, 1x1x1 square, when I glScale to 20,20,20, I would like the texture to be tiled. The texture is set to 1x1,

    - (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); 
}
+3
source share
1 answer
glMatrixMode(GL_TEXTURE);
glLoadIdentity();
glScalef(20,20,1);
glMatrixMode(GL_MODELVIEW);
+3
source

Source: https://habr.com/ru/post/1775899/


All Articles