2015-05-07 23 views
1

我跟隨this tutorialthis。它很好,但不會在屏幕上顯示任何內容。GLKit在swift中不顯示任何內容?

渲染:

override func glkView(view: GLKView!, drawInRect rect: CGRect) { 

    glClearColor(0.1, 0.5, 0.0, 1.0) 
    glClear(GLbitfield(GL_COLOR_BUFFER_BIT)) 

    // 
    effect.texture2d0.name = textrue.name 
    effect.texture2d0.enabled = GLboolean(GL_TRUE) 


    // 
    self.effect.transform.modelviewMatrix = modelMatrix() 
    // 
    effect.prepareToDraw() 
    // 
    glEnableVertexAttribArray(GLenum(GLKVertexAttrib.Position.rawValue)) 
    glEnableVertexAttribArray(GLenum(GLKVertexAttrib.TexCoord0.rawValue)) 

    // 
    var _quad = TexturedQuad() 

    withUnsafePointer(&_quad.bl.geometryVertex) { (pointer) -> Void in 
     glVertexAttribPointer(GLuint(GLKVertexAttrib.Position.rawValue), 2, GLenum(GL_FLOAT), GLboolean(GL_FALSE), 
      GLsizei(sizeof(TexturedVertex)), pointer) 
     //      println(sizeof(TexturedVertex)) 
    } 

    withUnsafePointer(&_quad.bl.textureVertex) { (pointer) -> Void in 
     glVertexAttribPointer(GLuint(GLKVertexAttrib.TexCoord0.rawValue), 2, GLenum(GL_FLOAT), GLboolean(GL_FALSE), 
      GLsizei(sizeof(TexturedVertex)), pointer) 
    } 
    // 

    glDrawArrays(GLenum(GL_TRIANGLE_STRIP), 0, 4) 

} 

TexturedQuad

struct v2Point { 
    var x : GLfloat 
    var y : GLfloat 
    init(_ x: GLfloat ,_ y:GLfloat){ 
     self.x = x 
     self.y = y 
    } 
} 
struct TexturedVertex { 
    var geometryVertex : v2Point = v2Point(0,0) 
    var textureVertex : v2Point = v2Point(0,0) 

} 
struct TexturedQuad { 
    var bl : TexturedVertex = TexturedVertex() 
    var br : TexturedVertex = TexturedVertex() 
    var tl : TexturedVertex = TexturedVertex() 
    var tr : TexturedVertex = TexturedVertex() 
    init(){} 
} 

初始化質地:

func initWithSpriteName(str: String){ 

     var options = [NSNumber(bool: true) : GLKTextureLoaderOriginBottomLeft] 

     var cgiImg = UIImage(named: "background.png")?.CGImage 
     assert(cgiImg != nil, "Image not found") 
     textrue = GLKTextureLoader.textureWithCGImage(cgiImg, options: options, error: nil) 
     // 
     quad = TexturedQuad() 
     quad.bl = TexturedVertex(geometryVertex: v2Point(0,0) , textureVertex: v2Point(0,0)) 
     quad.br = TexturedVertex(geometryVertex: v2Point(0,1), textureVertex: v2Point(0, textrue.height.toF())) 
     quad.tl = TexturedVertex(geometryVertex: v2Point(1,0), textureVertex: v2Point(textrue.width.toF(), 0)) 
     quad.tr = TexturedVertex(geometryVertex: v2Point(1,1), textureVertex: v2Point(textrue.width.toF() , textrue.height.toF())) 
    } 

請幫助我如何顯示圖像在迅速glkit。 謝謝大家的幫助。

回答

0

您可能忽略了GL_DEPTH_BUFFER_BIT

的標誌即 glClear(GLbitfield(GL_COLOR_BUFFER_BIT) | GLbitfield(GL_DEPTH_BUFFER_BIT))