2012-10-16 27 views
19

Tôi gặp phải một hành vi lạ từ Xcode 4.5 và SDK iOS 6 khi sử dụng họa tiết trên đối tượng 3D của tôi. Sự cố cũng xuất hiện trên ứng dụng mac của tôi khi xây dựng dựa trên OS X 10.8 SDK.GLKTexture không được ánh xạ chính xác từ iOS6

Tôi đang sử dụng OpenGL ES 2.0 trên iOS và cấu hình cũ OpenGL (< 3.0) trên OS X 10.8.

Kết cấu không được đặt ở đó có tọa độ chính xác nữa và tôi có rất nhiều hiện vật. Các VAOs được tải lên một cách chính xác và chúng trông đẹp mà không cần texturing. Khi sử dụng XCode 4.4.1 và iOS 5.1 SDK mọi thứ đều ổn.

VAO là chính xác như nhau (được kiểm tra bằng chụp khung OpenGL ES) và đồng phục kết cấu được gắn chính xác.


Xcode 4.4 VAO Tổng quan

Xcode 4.4

Xcode 4.5 VAO Tổng quan

Xcode 4.5

XCode 4.4.1 (iOS 5.1 SDK)

iOS Simulator 5.1 SDK

XCode 4.5 (iOS 6 SDK)

iOS Simulator 6.0 SDK


Mã/Shader Snippet

phần có liên quan cho uploadi ng và xử lý kết cấu. Tôi đã phải loại bỏ các shaders để minium.

Vertex Shader

precision highp float; 
attribute vec2 a_vTextureCoordinate; 
uniform mat4 u_mModelViewMatrix; 
uniform mat4 u_mModelViewMatrixInverse; 
uniform mat4 u_mProjectionMatrix; 
uniform mat4 u_mNormalMatrix; 
void main() 
{ 
.... 

    // Transform output position 
    gl_Position = u_mProjectionMatrix * u_mModelViewMatrix * a_vPosition; 
    // Pass through texture coordinate v_texcoord = a_vTextureCoordinate.xy; 
    v_vPosition = vec3(u_mModelViewMatrix * a_vPosition); 
    v_vTextureCoordinate = a_vTextureCoordinate.xy; 
    .... 
} 

Fragment Shader

precision highp float; 
// location 1 
uniform sampler2D u_diffuseTexture; 
varying vec2 v_vTextureCoordinate; 
varying vec3 v_vPosition; 
.... 
void main() { 
    .... 
    vec4 base = texture2D(u_diffuseTexture, v_vTextureCoordinate); 
    gl_FragColor = base; 
    .... 
} 

Texture tải

NSDictionary *options = @{GLKTextureLoaderOriginBottomLeft: @(YES), [NSNumber numberWithBool:YES] : GLKTextureLoaderGenerateMipmaps}; 
    NSError *error; 
    path = [path stringByReplacingOccurrencesOfString:@"/" withString:@""]; 
    path = [[NSBundle mainBundle] pathForResource:[path stringByDeletingPathExtension] ofType:[path pathExtension]]; 
    GLKTextureInfo *texture = [GLKTextureLoader textureWithContentsOfFile:path options:options error:&error]; 

Render vòng lặp (Chỉ gửi đồng phục của kết cấu hoạt động)

.... 
    [self setShaderTexture:[[materials objectForKey:@"diffuse"] objectForKey:@"glktexture"] 
        forKey:@"u_diffuseTexture" 
      withUniform1i:0 
      andTextureUnit:GL_TEXTURE0+0]; 
.... 

#pragma mark - Texture communication 

-(void)setShaderTexture:(GLKTextureInfo*)texture forKey:(NSString*)key withUniform1i:(int32_t)uniform andTextureUnit:(int32_t)unit { 
    glActiveTexture(unit); 
    glBindTexture(texture.target, texture.name); 
    [self.shaderManager sendUniform1Int:key parameter:uniform]; 
} 

Đã ai một vấn đề gần gũi với tôi kể từ iOS 6?

+1

Bạn đã gửi báo cáo lỗi tại https://bugreport.apple.com/ chưa? Các kỹ sư của OpenGL ES có thể muốn xem xét điều này. Bạn nói rằng điều này cũng xuất hiện trong ứng dụng 10.8 của bạn. Bạn đang sử dụng GLKTexture ở phía máy Mac? –

+1

Xin chào Brad, vâng tôi cũng sử dụng GLKit theo OS X 10.8. Tôi là một người tự hỏi rằng không ai khác đã báo cáo vấn đề đó. Trong giai đoạn beta của 10,8 tôi đã được hỏi trong các diễn đàn beta của Apple nhưng biết một trong những đã có một đầu mối. Tôi cũng sẽ điền vào một báo cáo lỗi. – DasFuxx

+0

Bạn có thể thêm ảnh chụp màn hình với kết cấu thử nghiệm không? (ví dụ: bàn cờ đánh số/màu) Có thể hữu ích khi xem các mẫu trong phần bù. – Andreas

Trả lời

1

Bạn nên báo cáo lỗi cho bugreport.apple.com như đã đề cập.Là một sang một bên, nếu bạn đang cho rằng GLKTextureLoader có thể là vấn đề (có vẻ như một lý thuyết tốt) thì bạn có thể thu hẹp mọi thứ xuống theo một trong hai cách khỏi đầu của tôi ...

1) Tôi sẽ kết xuất các kết cấu hiển thị cho một quad tầm thường và xem nếu kết quả render là những gì bạn mong đợi, tức là, là nó rendering theo chiều dọc lộn từ những gì bạn mong đợi? Kết cấu nguồn có bị cắt xén một phần theo cách nào đó mà bạn không mong đợi không?

2) Bạn có thể thử chuyển đổi hình ảnh của bạn đến một kích thước/màu sắc sâu/loại hình ảnh khác nhau và xem nếu vấn đề vẫn còn tồn tại. Những gì tôi đang nghĩ là, và nó có vẻ như không, nhưng có lẽ nó không được báo cáo bởi vì bạn đang đánh một trường hợp cạnh bất thường do một cái gì đó với định dạng hình ảnh. Biết được điều này sẽ giúp ích rất nhiều cho bất cứ ai cố gắng khắc phục điều này với quả táo.

Có lẽ sự giúp đỡ không phải là nhiều nhưng mà không cần phải truy cập vào tất cả các nguồn và tài sản của bạn, khá khó để biết gợi ý gì. FWIW, tôi có một số mẫu làm những việc tương tự với những gì bạn đang làm và không nhận thấy bất cứ điều gì theo GLKit v. 10.8.

Các vấn đề liên quan