ฉันกำลังพยายามเพิ่มพื้นผิวให้กับสี่เหลี่ยมโดยใช้ openGL ES 2.0 ใน Xcode และฉันสร้างสี่เหลี่ยมจัตุรัสโดยสร้างสามเหลี่ยมสองอัน เมื่อฉันรันโครงการ สี่เหลี่ยมจะเปลี่ยนเป็นสีดำทั้งหมด ฉันเชื่อว่ามันเกี่ยวข้องกับฉันในการเพิ่มพิกัดที่ไม่ถูกต้องสำหรับพื้นผิว
โครงสร้างที่เก็บข้อมูลทั้งหมด
typedef struct {
float Position[3];
float Color[4];
float TexCoord[2];
} Vertex;
พิกัดของตำแหน่ง สี และพื้นผิว
const Vertex Vertices[] = {
//postion color Texture
{{1, -1, 0}, {1, 0, 0, 1}, {1, 0}},
{{1, 1, 0}, {0, 1, 0, 1}, {1, 1}},
{{-1, 1, 0}, {0, 0, 1, 1}, {0, 1}},
{{-1, -1, 0}, {0, 0, 0, 1}, {0, 0}}
};
พิกัดของสามเหลี่ยมทั้งสองที่สร้างขึ้น
const GLubyte Indices[] = {
0, 1, 2,
2, 3, 0
};
การตั้งค่าพื้นผิว
- (GLuint)setupTexture:(NSString *)fileName {
// 1
CGImageRef spriteImage = [UIImage imageNamed:fileName].CGImage;
if (!spriteImage) {
NSLog(@"Failed to load image %@", fileName);
exit(1);
}
// 2
size_t width = CGImageGetWidth(spriteImage);
size_t height = CGImageGetHeight(spriteImage);
GLubyte * spriteData = (GLubyte *) calloc(width*height*4, sizeof(GLubyte));
CGContextRef spriteContext = CGBitmapContextCreate(spriteData, width, height, 8, width*4,
CGImageGetColorSpace(spriteImage), kCGImageAlphaPremultipliedLast);
// 3
CGContextDrawImage(spriteContext, CGRectMake(0, 0, width, height), spriteImage);
CGContextRelease(spriteContext);
// 4
GLuint texName;
glGenTextures(1, &texName);
glBindTexture(GL_TEXTURE_2D, texName);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, spriteData);
free(spriteData);
return texName;
}
แทนที่จะใช้: glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
ฉันใช้: glTexParameteri(GL_TEXTURE_BINDING_2D, GL_TEXTURE_WRAP_S, GL_NEAREST);
แต่ยังไม่มีโชค
2^N
เช่น2, 4, 8, 16, 32, 64, 128...
) ดังนั้นคุณจึงต้องการเพิ่มพารามิเตอร์ที่แสดงในคำถามที่ฉันเชื่อมโยงในความคิดเห็นดั้งเดิมของฉัน นั่นจะแก้ไขปัญหาได้ - person Hamish   schedule 09.03.2016GLKTextureLoader
เพื่อหลีกเลี่ยงการติดตั้ง-setupTexture:
ด้วยตัวคุณเอง - person Tommy   schedule 17.03.2016