2010-09-06 138 views
4

我正在尋找iPhone上的3D,我已經設法在設備上獲得3D立方體,但想添加交互性,例如觸摸一個臉部觸發特定事件和其他臉部一個不同的事件。我寧願避開光線選擇,因爲這增加了我不想在我的應用中增加的額外複雜度。在iPhone上的OpenGL ES顏色採摘

我已經閱讀了很多顏色採摘教程,但似乎沒有任何iPhone特定的教程或示例代碼在網絡上的任何地方。

我的主要問題是將獨特的彩色對象繪製到後臺緩衝區,並將紋理對象繪製到前臺緩衝區,從不向用戶顯示唯一的彩色對象,但檢測從後臺緩衝區觸摸的像素的顏色。

所以我的問題是任何人都可以指向Objective-C教程的方向或發佈一些示例代碼?

任何幫助或建議將不勝感激。

+0

選中此http://stackoverflow.com/questions/6774197/opengl-es-2-0-object-picking-on- ios – 2012-06-10 10:33:12

回答

3

好吧,18個小時後我終於解決了我的問題。在渲染方法中,我只需要在渲染處於SELECT模式時阻止presentRenderbuffer調用。我現在可以踢自己了!

if (mode == SELECT) { 
    glDisable(GL_DITHER); 
    glDisable(GL_LIGHTING); 
    glDisable(GL_LIGHT0); 
} 

// Draws the cube object, face by face and adds unique color to each face 
[Face1 draw]; 
[Face2 draw]; 
[Face3 draw]; 
[Face4 draw]; 
[Face5 draw]; 
[Face6 draw]; 

if (mode == SELECT) { 
    glEnable(GL_DITHER); 
    glEnable(GL_LIGHTING); 
    glEnable(GL_LIGHT0); 
} 

// Wrapping presentRenderbuffer with this if statement fixed 
// the problem where the unique colors would appear onscreen 
if (mode == RENDER) { 
    [context presentRenderbuffer:GL_RENDERBUFFER_OES]; 
} 

我希望這可以幫助別人在未來的東西:O)

+0

非常有幫助,指出我在正確的方向。 – Mike 2012-04-06 01:52:24

+0

不錯的教程,但它是浪費CPU時間爲每個幀創建一個緩衝區。 一次緩衝區或繪製到像屏幕一樣大小的紋理最好分配一次。 – simiula 2014-03-28 12:58:25