Macbook 2.1 and Macbook 3.1 means macbook version. Macbook 2.1 has Intel GMA 950 graphics card and Macbook 3.1 has Intel GMA x3100 graphics card. Grass is texture made from .jpg image. Image size is 3200 × 2000. Texture is being applied to quad with glTexCoord2f.
Image to texture code:
ftImg = [NSImage imageNamed:@"grass.jpg"];
CGImageSourceRef src;
src = CGImageSourceCreateWithData((CFDataRef)[ftImg TIFFRepresentation], NULL);
CGImageRef ft = CGImageSourceCreateImageAtIndex(src, 0, NULL);
ftWidth = CGImageGetWidth(ft);
ftHeight = CGImageGetHeight(ft);
if(ft) {
ftData = (GLubyte *) calloc(ftWidth * ftHeight * 4, sizeof(GLubyte));
ftContext = CGBitmapContextCreate(ftData, ftWidth, ftHeight, 8, ftWidth * 4, CGImageGetColorSpace(ft), kCGImageAlphaPremultipliedLast);
CGContextDrawImage(ftContext, CGRectMake(0.0, 0.0, (CGFloat)ftWidth, (CGFloat)ftHeight), ft);
CGContextRelease(ftContext);
glGenTextures(1, &ftTxt);
glBindTexture(GL_TEXTURE_2D, ftTxt);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, ftWidth, ftHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, ftData);
free(ftData);
}
Texture to quad code:
glClear(GL_COLOR_BUFFER_BIT);
glEnable(GL_BLEND);
glBlendFunc(GL_ONE, GL_ZERO);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, ftTxt);
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f);
glVertex2f(0.0, 500);
glTexCoord2f(0.0f, 1.0f);;
glVertex2f(0.0, 0.0);
glTexCoord2f(1.0f, 1.0f);
glVertex2f(800, 0.0);
glTexCoord2f(1.0f, 0.0f);
glVertex2f(800, 500);
glEnd();
glDisable(GL_TEXTURE_2D);
glFlush();
By fallowing your link I’ll try to change my texture code to:
ftImg = [NSImage imageNamed:@"grass.jpg"];
CGImageSourceRef src;
src = CGImageSourceCreateWithData((CFDataRef)[ftImg TIFFRepresentation], NULL);
CGImageRef ft = CGImageSourceCreateImageAtIndex(src, 0, NULL);
ftWidth = CGImageGetWidth(ft);
ftHeight = CGImageGetHeight(ft);
if(ft) {
ftData = (GLubyte *) calloc(ftWidth * ftHeight * 4, sizeof(GLubyte));
ftContext = CGBitmapContextCreate(ftData, ftWidth, ftHeight, 8, ftWidth * 4, CGImageGetColorSpace(ft), kCGImageAlphaPremultipliedLast);
CGContextDrawImage(ftContext, CGRectMake(0.0, 0.0, (CGFloat)ftWidth, (CGFloat)ftHeight), ft);
CGContextRelease(ftContext);
glGenTextures(1, &ftTxt);
glBindTexture(GL_TEXTURE_2D, ftTxt);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, ftWidth, ftHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, ftData);
glGenerateMipmap(GL_TEXTURE_2D);
free(ftData);
}
And see if it works, when I go back home from work.