4

我正在研究 iPhone 上的 3D,我已经设法在设备上获得了一个 3D 立方体,但想添加交互性,例如触摸一张脸会触发特定事件,而另一张脸会触发不同的事件。我宁愿避开光线拾取,因为这会增加我不希望在我的应用程序中出现的额外复杂性。

我已经阅读了很多颜色挑选教程,但似乎在网络上的任何地方都没有任何 iPhone 特定的教程或示例代码。

我的主要问题是将独特的彩色对象绘制到后缓冲区,将纹理对象绘制到前缓冲区,从不向用户显示独特的颜色对象,而是检测从后缓冲区触摸的像素的颜色。

所以我的问题是任何人都可以指出我的 Objective-C 教程的方向或发布一些示例代码吗?

任何帮助或建议将不胜感激。

4

1 回答 1

3

好的,所以在 18 小时后,我终于解决了我的问题。在渲染方法中,我所要做的就是presentRenderbuffer在渲染处于 SELECT 模式时阻止调用。我现在可以踢自己了!

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)

于 2010-09-07T10:10:01.483 回答