0
我是OpenGL ES中的新手,我正在嘗試做一些基本的東西,作爲學習曲線的一部分。我能夠使用兩個glDrawArrays調用呈現兩個網格,一個球體和一個立方體。我試圖加載一個不同的紋理來環繞立方體和球體,但是發生的情況是最後一個加載的紋理被包裝到兩個網格中。有誰知道爲什麼會發生這種情況?如何在OpenGL ES 2.0中爲每個網格加載不同的紋理?
這裏是爲網格的代碼:
glEnable(GL_DEPTH_TEST);
glGenVertexArraysOES(1, &vertexArray);
glBindVertexArrayOES(vertexArray);
glGenBuffers(1, &vertexBuffer);
glBindBuffer(GL_ARRAY_BUFFER, vertexBuffer);
glBufferData(GL_ARRAY_BUFFER, sizeMeshVerts, meshVerts, GL_STATIC_DRAW);
glEnableVertexAttribArray(GLKVertexAttribPosition);
glVertexAttribPointer(GLKVertexAttribPosition, 3, GL_FLOAT, GL_FALSE, 4*8, BUFFER_OFFSET(0));
glEnableVertexAttribArray(GLKVertexAttribNormal);
glVertexAttribPointer(GLKVertexAttribNormal, 3, GL_FLOAT, GL_FALSE, 4*8, BUFFER_OFFSET(4*3));
glEnableVertexAttribArray(GLKVertexAttribTexCoord0);
glVertexAttribPointer(GLKVertexAttribTexCoord0, 2, GL_FLOAT, GL_FALSE, 4*8, BUFFER_OFFSET(4*6));
// Texture
// Create image from file
NSString *path = [[NSBundle mainBundle] pathForResource:textureImage ofType:@"jpg"];
NSData *texData = [[NSData alloc] initWithContentsOfFile:path];
UIImage *image = [[UIImage alloc] initWithData:texData];
//生成一個新的OpenGL ES紋理緩衝器和 //從 初始化使用像素數據緩衝區內容//指定核心圖形圖像,cgImage 。
[TextureLoader textureWithCGImage:image.CGImage options:nil error:NULL];
glBindVertexArrayOES(0);
這裏是抽獎代碼:
glBindVertexArrayOES(_vertexArray);
// Render the object with ES2
glUseProgram(_program);
// Set the sampler texture unit to 0
glUniform1i (uniforms[UNIFORM_TEXTURE_MATRIX], 0);
glDrawArrays(GL_TRIANGLES, 0, numVertices);
太棒了!這工作!非常感謝 – Pupillam