2014-03-13 57 views
0

我在創建一個使用GLKView的觸摸輸入簽名。 但現在我需要一個UIImage低於簽名。簡而言之:我想使用自定義的GLKView在UIImage上方繪製線條。在GLKView後面的UIImage

的問題是,我行獲取每一次繪製的圖像的下方,不管我設置不透明的NO和insertSubview:belowSubview ..

否則我試圖與紋理的幫助,但我不知道如何要做到這一點..

我不想使用GLKViewController如果可能的話;) 在此先感謝!

更新:

,我發現我的問題,現在我得到,我想有結果。

在構造函數中的GLKView中,我啓動了EAGLContext。 我忘了將上下文設置爲自我。

context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2]; 

if (context) { 

    self.opaque = NO; // set view transparent 
    self.context = context; // set the context to itself 
} 

雖然設置不透明的NO是不是一個很好的解決方案這是我的任務的唯一有效的解決方案。

回答

0

有幾種方法值得一看。

一種是在視圖遏制一下分層,而不是 - 讓GLKView視圖的子視圖你在繪製UIImage

另一種是使用OpenGL ES繪製圖像在GLKView。這是一個更多的工作,但不是太難,如果你仔細查看文檔和已經在這裏的答案。它還有一些額外的好處:既然背景圖像和繪圖都進入相同的幀緩衝區,您可以控制GL中的混合。這裏有一些入門提示:

  1. 使用GLKTextureLoader將圖像轉化爲OpenGL ES紋理。
  2. 設置一個GLKBaseEffect實例用於繪製紋理。不要忘記告訴prepareToDraw
  3. 使用紋理和效果繪製四邊形。 This answer擁有相當不錯的起點。
  4. 繪製背景圖像後,繪製您的簽名,它將位於圖像頂部。
+0

首先感謝你的回答,我一定會試着專注於你的第一個推薦,那就是視圖遏制。 但有一些問題: - GLKView的繪製方法不叫 - 如果我強制通過代碼繪圖,它仍然不可見 - 拍攝GLKView的快照顯示我的簽名,這種混淆我 Im加載'父'UIView是一個筆尖文件,並插入視圖下面supbview也沒有幫助;) – Muarl

+0

你是如何「強迫繪圖」?爲了讓一個'GLKView'(或任何'UIView'子類)自己繪製,你可以調用它的'setNeedsDisplay'方法,該方法準備繪製並調用你的'drawRect:'或'glkView:drawInRect:'方法。 – rickster

+0

GLKView的快照方法「強制」繪圖。但是我已經在我的答案中找到了我將編輯的問題。問題的一部分是我自己的愚蠢;)例子:我關閉enableSetNeedsDisplay。 – Muarl